- 论坛徽章:
- 2
|
本帖最后由 knull 于 2014-08-19 19:41 编辑
环境:A,B,C三台机器,A,B是一般的pc机器,双核+1Gbps;C是服务器,8核+1GBps;都是windows系统;
测试内容:用ACE编写的网络测试程序,简单的客户端、服务端;只不过发送的tcp报文比较大,每条消息80K;socket的接收、发送队列,都设置为512K。
测试结果:A和C测试,发送10000条,耗时近80秒,即近10M每秒;对每次recv收到的大小统计,发现其中大部分是1460字节,占90%+;
A和B测试,发送10000条,没统计耗时;统计每次的recv的大小,发现其中50%是30-40K;0-10K,10-20K,20-30K各占10%左右;其余的,80-520K大约占10%。
分析:在对软件进行性能分析的时候,发现TCP通信是瓶颈,所以单独拿出来测试了下,发现还是这样子的。说明,很可能的确是TCP造成的问题。由于每次接收的包都不大,说明接收端是不饱和的(如果饱和,那么缓冲有512K,完全不会recv这么小的数据包)。这是发送端,也是send整个80K数据包。是不是可能是因为tcp发送慢造成的?另外,很明显的就是,C作为服务器,为什么反而不如pc机B?
提问:这里,tcp通信存在瓶颈,那么可能是什么原因造成的?有没有改进的可能?
谢过 |
|