开发者社区> 问答> 正文

下载提示socketTimeout如何排查?

下载提示socketTimeout如何排查

展开
收起
1358896759097293 2021-03-10 20:26:17 1383 0
1 条回答
写回答
取消 提交回答
  • 45271990@qq.com

    常见于 SDK 、API 调用时的报错,客户源可能是在云主机或者 PC 端。通过文 章开始所说道的信息我们判断是是否为必现问题,如果问题必现的话很容易能定位。 如果不容易出现只能分层排查。 分析: ● 先看下主机的 socket 资源是否足够分配,通过可以用 netstat 或者 ss 命令来 查看本机的 socket 连接数,如果主机 TCP 占用较慢,很容易出现连接数资 源不够分配的情况。 ● 看下主机的 ulimit -n 的文件描述符是否够用。 ● 如果用户使用的是 SDK ,需要确认 OSSClient 在初始化时是否限制了连接数和超时时间。如果通过前面测试发现网路不好抖动很大,建议把 sockettimeout 的时间放长些。

    // 创建 ClientConfiguration。ClientConfiguration 是 OSSClient 的配置类,可配置代理、
    连接超时、最大连接数等参数。
    ClientConfiguration conf = new ClientConfiguration();
    // 设置 OSSClient 允许打开的最大 HTTP 连接数,默认为 1024 个。
    conf.setMaxConnections(200);
    // 设置 Socket 层传输数据的超时时间,默认为 50000 毫秒。
    conf.setSocketTimeout(10000);
    // 设置建立连接的超时时间,默认为 50000 毫秒。
    conf.setConnectionTimeout(10000);
    // 设置从连接池中获取连接的超时时间(单位:毫秒),默认不超时。
    conf.setConnectionRequestTimeout(1000);
    // 设置连接空闲超时时间。超时则关闭连接,默认为 60000 毫秒。
    conf.setIdleConnectionTime(10000);
    // 设置失败请求重试次数,默认为 3 次。
    conf.setMaxErrorRetry(5);
    // 设置是否支持将自定义域名作为 Endpoint,默认支持。
    conf.setSupportCname(true);
    // 创建 OSSClient 实例。
    OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret, 
    conf);
    // 关闭 OSSClient。
    ossClient.shutdown();
    
    

    一些特殊的架构场景,比如加了一些 proxy 产品,这种情况经常会遇到瓶颈,需 要分开来看

    2021-03-12 23:22:06
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
附件下载测试 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载