linux服务器高并发下socket连接数不够的问题
游戏服务框架采用的skynet,最近投放后量起来了,原本8核16G的服务器却出现掉线创建不了新的socket连接的情况。看了上线人数也才几百人,CPU和内存都很平稳,只可能是服务器本身限制了socket连接数。
<code>
#查询了下tcp数才1000多
netstat -anp|grep tcp|wc -l
#查看socket文件数限制,默认只有1024
ulimit -n
#临时改为4096
ulimit -n 4096
</code>
ulimit改完关闭ssh终端重新上去就还原了,这样改是临时改动。修改系统文件/etc/sysctl.conf
<code>
vi /etc/sysctl.conf
#在里面加上配置
net.ipv4.ip_local_port_range = 1024 65535
net.core.rmem_max=16777216
net.core.wmem_max=16777216
net.ipv4.tcp_rmem=4096 87380 16777216
net.ipv4.tcp_wmem=4096 65536 16777216
net.ipv4.tcp_fin_timeout = 10
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_window_scaling = 0
net.ipv4.tcp_sack = 0
net.core.netdev_max_backlog = 30000
net.ipv4.tcp_no_metrics_save=1
net.core.somaxconn = 262144
net.ipv4.tcp_syncookies = 0
net.ipv4.tcp_max_orphans = 262144
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2
#wq保存下
#加载下配置
/sbin/sysctl -p /etc/sysctl.conf
#把文件限制放开命令直接写到终端加载自动执行
ulimit -HSn 60000
echo "ulimit -HSn 60000" >> /etc/rc.local
</code>
即使是这样还是可能有问题,最好重启下服务,完成后能终于tcp socket能正常创建了。
更多>>