七牛云上传问题排查
在一个商城的应用中遇到了文件上传缓慢的问题,比如上传一个 3M 的图片,居然耗时2分钟。这明显是有问题的,接下来是排查的流程。
排查方向(分服务端、本地客户端、网络、七牛配置等维度)
一、客户端代码问题
- 有没有使用
InputStream
异常耗时的写法?(比如读取流特别慢、阻塞) - 文件是临时生成的吗?(临时文件生成缓慢)
- 有没有对
fileBytes
做 base64 编码等多余处理?
二、网络问题
📡 服务端到七牛的网络延迟大或者带宽不足?
1 | traceroute upload.qiniup.com |
三、七牛云配置是否异常(比如 bucket 绑定了较远的存储区域)
Region 设置是否正确?
七牛有多个区域,比如华东、华北、华南、北美。应该设置与服务器物理位置最接近的:
1 | Configuration cfg = new Configuration(Region.huabei()); // 华北 |
四、排查上传过程日志
打开详细日志:
- 七牛 SDK 支持开启 debug 模式(输出日志)
- 在服务端记录上传耗时:从接收到文件 → 上传完成 的整体耗时
1 | long start = System.currentTimeMillis(); |
修复代码
- 使用 byte[] 上传
- 配置相近的上传区域
以上改动都没有优化上传速度,怀疑是网络出问题了
排查网络问题
通过 ping 等工具发现延迟和丢包情况是非常健康的,紧接着使用iperf3测试带宽
A 服务器运行
1 | iperf3 -s |
B 服务器运行
1 | iperf3 -c <server-ip> -R # 测试上传带宽 |
发现上行速度确实很慢
为了更进一步的确认 又使用 nload
查看具体网卡的实时上传速率
发现在上传文件的时候 对应网卡的上传速度只有 几十 kBit/s
那么就确定是带宽不足的问题了
解决问题
确认是不是 docker 限制了速率
1
docker inspect file-prod | grep -i bandwidth
确认是不是云服务器的上行带宽有限制
最终我们找到了影响上传速度的问题,并成功解决。
原文链接: https://alexhuihui.github.io/article/20250416.html
版权声明: 转载请注明出处.