做极端测试,让server不断accept,而不去做处理,不断增加消息队列的长度,看最后资源耗尽
情况1:使用一个客户端连接,MsgQueue到达54481服务器开始提示:accept failed
情况2:使用4个客户端连接,server出现1次cpu占用100%,无法响应,此时机器很迟钝,打开ie访问网页提示找不到服务器,
停了约3分钟后响应过来继续处理,又出现一次cpu占用75%,
响应很慢,内存占用在530M左右(server未启动时300多M),4个客户端发完connect,MsgQueue长度为46432,也就是没有达到队列
最大长度。此时启动一个客户端继续connect,server继续accept,此时能够打开网页上网了,但是声卡声音不正常
这个单一的客户端发到最后,server又一次出现accept failed,但是关了它重新开一个客户端,server继续accept,并且msgQueue长度
继续增加。
最后当MsgQueue长度达到121737时,内存占用612100,服务器不再accept,队列长度不再增加,客户端无法connect
但是过了2分钟,服务器响应过来继续accept
最后当最后当MsgQueue长度达到128776时,client再也连不上,MsgQueue长度不再增加,此时内存消耗为596144,
但网络好像出了问题,ie访问不了网页,提示Internet Explorer无法打开搜索页。
把server端关闭后网络正常,可以浏览网页
问题总结:设计消息队列是最好设定消息队列上限为一个合理值