症状和问题:
在达到某连接数后,新建立的连接会直接断开,错误提示如下两条:
"无法将数据写入传输连接: 远程主机强迫关闭了一个现有的连接。。"
"无法从传输连接中读取数据: 远程主机强迫关闭了一个现有的连接。。"
之前建立的连接正常收发包。
错误代码定位到:System.Net.Sockets.TcpListener类下的EndAcceptTcpClient()方法。
补充描述:
模拟终端和服务端同时提示以上错误,应该不是模拟终端问题。
之前觉得百兆交换机影响,年前换成了千兆的,却没什么大的提升;
服务器硬件应该是千兆网卡,但win2003在VMware
虚拟机
内,所以提示100Mbps,但使用率从没超过1%还是0.1%。如图
很详细的啰嗦描述:
0、cpu/内存/线程数 都不高,比如某时刻值: CPU 13%,线程数51,内存859696k
1、如果不发
数据包
,只建立TCP连接,测试能到2W,甚至更大都没有问题(没有进行更大连接测试)。
2、收发数据包,到1W都正常,再增加模拟终端数量就报如上错误。
3、尝试加长和缩短数据包大小,最大TCP连接数有
反比
变化,但很小。(不清楚交换机怎么分包转发的)
4、个人猜测,数据包在某个环节处理不过来引起的问题。但我程序任何资源的占用都不高。所以一直怀疑是网络交换机。另外是否操作系统某些设置也影响,或者虚拟机也影响。