请大牛们帮助解决,udp 多线程接收性能问题
风涛hit 2016-05-30 10:01:46 最近项目需要,在做udp性能测试。但是测试过程发现一个问题,还没弄太明白,希望各位大牛帮助解决。
问题描述:两台计算机,通过千兆网卡通信,使用udp编程,一台做客户端,一台做服务端。服务端采用多线程模式编写,每个线程创建都会创建属于自己的socket,这些socket都绑定到同一IP的不同端口下,并在此socket上等待接收数据。客户端同样采用多线程模式,每个线程开辟对应服务程序各线程的socket,通过此socket发送数据。经过测试,当使用单线程运行时,服务端与客户端能正常收发数据,双方速度均在130Mbps左右,基本无丢包。但是当使用2个线程或更多线程进行数据收发时,例如使用两个线程进行收发,发送线程速度依然130Mbps,但是接收线程丢包严重,导致速度下滑厉害,有时才几兆bit每秒。
但是如果同时打开2个服务程序及客户端程序进行数据收发,每个程序中使用1个线程进行工作,则每个服务程序的接收速度与客户端的发送速度基本一致,大概130Mbps,且都没有丢包。两个服务程序的接收速度和为260Mbps。
现在不清楚的是为什么在多线程情况下跟多进程情况下有这么大的差距,原因为何?
先谢谢各位了,这几天一直没弄明白,希望大家能提供一些有用的思路。