性能瓶颈一般是这三个方面:CPU、网络带宽、I/O
前提:带宽为5M,往返延迟为33ms,处理时间为16ms
若要忽略报文内容每次等待通信的时间。则5M/s * 50ms = 250KB
但是一般的TCP 窗口大小为几十B到4KB不等,8KB/ 5M/s = 1.6ms 因此发送1.6ms后即停止发送等待网络返回结果后才发送。
线程数分析:
5 线程的时候CPU调度无压力线程分配的时间多,在发送窗口一定时候内容最多只有5个排队。所以线程在网络通信时等待,调度不充分。
10个线程,带宽上去了,10个可以一次性发送,或者说最优情况:第一个发送,等到再次轮到它刚好返回结果。充分利用了CPU。
100个线程,
1. 带宽不足,CPU调度快,数据积压。若以第100线程参考,数据排列会很久,此时ping,延迟非常高,数据一直排不上号。
2. CPU不足,若以第1线程为参考,IO结束也还调用不到它,没有充分使用时间。带宽是限制,若发送效率高
http%3a%2f%2fwww.yunpian.com%2fv1%2fsms%2fsend.json+POST+text%3d%e3%80%90%e4%ba%91%e7%89%87%e7%bd%91%e3%80%91%e6%82%a8%e7%9a%84%e9%aa%8c%e8%af%81%e7%a0%81%e6%98%af4230%26mobile%3d13012312312%26apikey%3dbed45d80b51f8d39a3e122941a85e4c3
ip 20
tcp 32
eth 24
文本数据 234 实际报文 333(267) / 433(367)
三次连接数据 78 74 66 = 218
发送数据 433B = 433
确认报文 66B = 66
接收数据 412B = 412
确认报文 66B = 66
三次断开数据 66 66 66 = 198
长连接进带宽:433 + 66 = 499B
长连接出带宽:66 + 412 = 478B
短连接进带宽:152 + 433 + 66 + 66*2 = 783B
短连接出带宽:66 + 412 + 66 + 66 = 610B
客户端
10Thread short 34708 64.4KB/s 6.1K
10Thread long 57622 107.2KB/s 3.8K