常见问题
更新时间:2025-03-13
常见问题
Failed to parse the response result
- 错误原因:该异常表示,java sdk在解析服务端回包解析异常。通常情况下,原因是客户网络层会劫持回包,导致sdk解析不了返回结果
- 解决方法:业务侧可以通过idea调试代码,在返回结果前打断点执行并输出返回结果查看是否有篡改或者劫持。若有,则需要调整网络解析,给bos地址的劫持设置白名单
SignatureDoesNotMatch
-
错误原因:
- AccessKey ID和AccessKey Secret不一致
- 版本不匹配。在0.10.227版本之后,SDK会默认自动开启bucket virtual hosting。用户如果报错签名不对,可能是sdk版本过旧导致请求没有正确拼接成四级域名
- 客户侧网络层修改http请求。客户出网配置可能会将请求header的host修改,导致在服务端获取host验证签名不匹配
-
解决方法:
- 用户检查自己使用的ak sk
- 更换sdk到最新版
- 客户侧检查出网路由,打印请求发出去前的header和body字段。并联系bos值班同学查看后端收到请求的header等字段是否一致
Unable to execute HTTP request
-
错误原因:
- JVM中存在大量org.apache.http.impl.conn.PoolingHttpClientConnectionManager实例导致连接打满,http请求建立不了连接。客户使用bosclient时每次都new一个新的client会偶发此报错
- 偶发网络连接抖动或者客户端环境cpu、io打满
-
解决方法:
- 主动关闭已执行完毕的bosClient或使用单例模式
- 业务侧进行重试
SocketException
-
错误原因:
- 可能是socket在init阶段就失败了,导致请求没有到达bos
-
解决方法:
- 检查出现问题时是否出现网络抖动
- 检查主机的socket连接数是否占满,确认出现问题时连接数是否超过SDK中设置的maxconnection,如果连接数超过maxconnection设置,也会出现socket异常
- 利用tcpdump或者Wireshark工具进行抓包,问题复现后分析数据包排查
Connection pool shut down
-
错误原因:
- 调用bosClient.shutdown()接口后,还继续通过bosClient发送请求
-
解决方法:
- 请检查调用逻辑,确保调用了bosClient.shutdown()接口之后,不再通过bosClient发送请求。需要发请求则重新new一个bosClient
Too Many Requests
-
错误原因:
- 客户请求并发太高,导致触发了bos服务端的限速,因此部分请求被拒绝执行
-
解决方法:
- 请检查调用逻辑,并发增高不是异常业务逻辑导致
- 如果真的需要很大并发,可以联系bos值班同学,看限速还能否上调
- 业务侧自己降低并发