在压测过程中,发现阿里云的服务器,socket连接数的极限是5000,导致服务随便压一压,200的并发很快就阻塞了,大部分请求都会报错 Can't assign requested address 。
首先想到的是,增大连接数量;
echo /proc/sys/net/ipv4/tcp_max_tw_buckets 20000
将最大timewait的数量修改到2w,测试,发现这次的socket连接数量还是满了,但是不是5000,而是1w4左右,说明可能aliyun的最大socket单机数量也就是1w4上下;
然后,启用timewait快速回收
echo /proc/sys/net/ipv4/tcp_tw_recycle 1
echo /proc/sys/net/ipv4/tcp_tw_reuse 1
之后压测,连接不再快速增长,一直维持着几百的范围内。
这些修改都会因为重启被重置,可以将其加入/etc/sysctl.conf中,每次重启也都将直接生效;
net.ipv4.tcp_max_tw_buckets = 20000 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_fin_timeout = 10 net.ipv4.ip_local_port_range = 1024 65535 net.ipv4.tcp_max_syn_backlog = 8192
这个是我对服务器连接的修改。
留言