多线程并发调用接口网络带宽瓶颈

zgw06629 发布于 05/15 18:16
阅读 733
收藏 0

开源之夏第三届火热来袭,高校学生参与赢万元奖金!>>>

调用百度OCR接口 识别图片

200张图片 5个线程  并发调用

本地跑用时 20s (通过测速工具看了下 本地相当于300M-500M带宽)

5M带宽云服务器上跑用时 57s 

10M带宽云服务器上跑用时 32s (相比5M 提升了1倍)

有这么一个疑惑 5个并发  图片平均大小166K 5*166K=830K 连1M都没有 5M也绰绰有余了 怎么相比本地有3倍的差距呢

瓶颈是在哪里呢? 相比花钱升级带宽 代码层面能优化吗 如 异步非阻塞 IO事件通知等

加载中
1
天灯石
天灯石

一些前提条件图片的总大小 200 * 166 kB = 33200kB ≈ 32.12MB. 5M带宽理论传输速度是5/8=0.625MB/s,10M带宽理论传输速度是10/8=1.25MB/s.
根据你提供的时间能判断出来图片就是在服务器上的,图片只有一次传输,从你的服务器到百度服务器,下面是计算的传输时间.

1.5M服务器:传输图片需要的时间是32.12/0.625=51.392s
2.10M服务器:上传需要的时间是32.12/1.25=25.696s

和你提供的时间很接近,瓶颈就在带宽上

不dddd
不dddd
回复 @zgw06629 : 网络带宽单位的符号是bps,而普通文件单位Byte,换算单位为1Byte=8bit。”
天灯石
天灯石
回复 @zgw06629 : 一般说的带宽5M的单位是Mbps简写,也就是megabits per second, 而我们一般说文件大小的单位是MB,也就是是megabytes, 而1 byte =8 bit ,所以要把Mbps的单位换成MBps要除以8.
zgw06629
zgw06629
回复 @天灯石 : 除以8 是怎么来的呢 有相关文档吗
天灯石
天灯石
你本地测试的是家庭宽带,上传速度是做了限制的,比如电信的500M家庭宽带,上传速度是30M,换算下是30/8=3.75MB/s
0
小腊肠
小腊肠

不知道业务场景是啥, 建议改成由前端去调用百度API, 不要走服务器流量.

0
maradona
maradona

带宽的M和文件大小的M其实是不同单位😁

OSCHINA
登录后可查看更多优质内容
返回顶部
顶部
返回顶部
顶部