完成端口(IOCP)IO的性能,该如何解决
完成端口(IOCP)IO的性能
近期做个测试,发现完成端口的IO性能问题:
客户端发起5千个连接,向服务器发送数据包,每个连接每秒发送1个数据包(1秒共发5千个数据包),每个数据包的大小为100字节。
服务器收到数据包后立即回发给客户端,客户端统计每个数据包的往返时间,在局域网内局域大部分在1秒以上,甚至超过5秒和10秒。
测试环境为百兆局域网,测试机器都为i3的CPU,Socket都采用异步IO,客户端和服务器端的完成端口线程各10个。且一个性能好一个性能较差 此问题会更加明显。
大家帮忙分析啥问题出在哪里?
------解决方案--------------------
1.可能发的数据太小。TCP/IP里面有优化算法,太小可能不发送。你关闭一下试下。
2.要么你程序问题。先用小量客户端试下
------解决方案--------------------
5000个套接字用神马数据结构存放的,插入,遍历用锁,临界区各种互斥了有木有;
频繁分配释放内存了有木有;
计时不精确有木有;
时间统计是界面显示的还是文件存储的,无码无真相啊。
------解决方案--------------------
iocp不是神!!!
近期做个测试,发现完成端口的IO性能问题:
客户端发起5千个连接,向服务器发送数据包,每个连接每秒发送1个数据包(1秒共发5千个数据包),每个数据包的大小为100字节。
服务器收到数据包后立即回发给客户端,客户端统计每个数据包的往返时间,在局域网内局域大部分在1秒以上,甚至超过5秒和10秒。
测试环境为百兆局域网,测试机器都为i3的CPU,Socket都采用异步IO,客户端和服务器端的完成端口线程各10个。且一个性能好一个性能较差 此问题会更加明显。
大家帮忙分析啥问题出在哪里?
------解决方案--------------------
1.可能发的数据太小。TCP/IP里面有优化算法,太小可能不发送。你关闭一下试下。
2.要么你程序问题。先用小量客户端试下
------解决方案--------------------
5000个套接字用神马数据结构存放的,插入,遍历用锁,临界区各种互斥了有木有;
频繁分配释放内存了有木有;
计时不精确有木有;
时间统计是界面显示的还是文件存储的,无码无真相啊。
------解决方案--------------------
iocp不是神!!!