问题描述
最近项目要求开发一个支持4W左右个Socket长连接的服务器程序。准备用.net下的SocketSocketEventArgs来实现,写了一版,在本机测试时(客户端和服务端均在本机),服务端程序可并发处理6W个连接,毫无压力,但是当把服务端程序放到公网上测试时,支持的连接客户端到达1000左右就无法连接了,(telnet服务器的监听端口也很慢,或者连不通)。不知道问题出在哪里,就算考虑到网络延迟问题,但是这么大的差距也无法接受,请有相关经验的大大指教,可能存在的问题,不胜感激。
解决方案
解决方案二:
PS:服务器操作系统是windowsserver2008,托管在IDC机房,100M共享带宽
解决方案三:
查看公网是服务器的资源占用,如果小于内网6W个,说明问题在网络,如果等于6W个,问题在服务器,总的来说,是服务器没有考虑数据传输延时和粘包处理不好的问题
解决方案四:
无代码,无真相
解决方案五:
可能和测试方法有关,建议贴上代码看看
解决方案六:
windowsserverTCP连接数好像是有限制的。可以通过改注册表去改到最大
解决方案七:
引用楼主mark_gis的回复:
最近项目要求开发一个支持4W左右个Socket长连接的服务器程序。准备用.net下的SocketSocketEventArgs来实现,写了一版,在本机测试时(客户端和服务端均在本机),服务端程序可并发处理6W个连接,毫无压力,但是当把服务端程序放到公网上测试时,支持的连接客户端到达1000左右就无法连接了,(telnet服务器的监听端口也很慢,或者连不通)。不知道问题出在哪里,就算考虑到网络延迟问题,但是这么大的差距也无法接受,请有相关经验的大大指教,可能存在的问题,不胜感激。
NET在内网或本机测试是可以搞到6W的,不过很吃力了。你再放到公网上。。。可想而知了。。。6W个你应把他分几个网关然后再与数据服务器连接,而不是直接数据服务器。
解决方案八:
引用1楼mark_gis的回复:
PS:服务器操作系统是windowsserver2008,托管在IDC机房,100M共享带宽
真逗。你的客户端跟服务器之间最“窄”的地方也是100M带宽?
解决方案九:
本机测试可能不走网络,最少也要搞个局域网测试。楼主的情况,看起来像是网络环境问题。
时间: 2024-10-29 14:44:31