在压测过程中,发现阿里云的服务器,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

这个是我对服务器连接的修改。

最后修改日期: 2019年5月23日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。