,关于服务端最大连接数和最大并发数有关问题
紧急求助,关于服务端最大连接数和最大并发数问题
高手帮忙!
我写了一个SOCKET的服务端,TCP协议,发现客户端的最大并发数字4K左右时,服务器开始出现问题,或者连接不上,或者程序死掉,有人说这是windows的并发数限制,需要改成完成端口模式,或者采取集群部署方式;有的说服务端改成用liunx系统来部署,并发数会增加很多,等等
由于我的服务端程序是跨平台,所以在linux上应该可以部署,但是这个增大的理论依据什么?改成完成端口不太现实,因为完成端口只能在windows平台上使用
不知道大家对上面的认识有无什么指点?连接数和并发数是否真的受操作系统限制?最大的值分别是多少?
------解决方案--------------------
这个当然受限制,并且是可以修改的。
最大应该是65536吧,我记得 32位系统下。
------解决方案--------------------
最大连接数量主要受限制于系统保留的不可分片内存,linux也差不多
也就是socket的内部缓冲需要的不可分片物理内存大小
win server 系统下,如果是目前的主流配置服务器
这个能接受的socket远超出你的数字,也不会引发死机崩溃[即使socket创建失败]
根据你的数字判断
我觉得应该是你使用了太多的线程太多导致的
你检测下你使用了多少虚拟内存看看
高手帮忙!
我写了一个SOCKET的服务端,TCP协议,发现客户端的最大并发数字4K左右时,服务器开始出现问题,或者连接不上,或者程序死掉,有人说这是windows的并发数限制,需要改成完成端口模式,或者采取集群部署方式;有的说服务端改成用liunx系统来部署,并发数会增加很多,等等
由于我的服务端程序是跨平台,所以在linux上应该可以部署,但是这个增大的理论依据什么?改成完成端口不太现实,因为完成端口只能在windows平台上使用
不知道大家对上面的认识有无什么指点?连接数和并发数是否真的受操作系统限制?最大的值分别是多少?
------解决方案--------------------
这个当然受限制,并且是可以修改的。
最大应该是65536吧,我记得 32位系统下。
------解决方案--------------------
最大连接数量主要受限制于系统保留的不可分片内存,linux也差不多
也就是socket的内部缓冲需要的不可分片物理内存大小
win server 系统下,如果是目前的主流配置服务器
这个能接受的socket远超出你的数字,也不会引发死机崩溃[即使socket创建失败]
根据你的数字判断
我觉得应该是你使用了太多的线程太多导致的
你检测下你使用了多少虚拟内存看看