Linux高并发连接数解决
0. 环境
Ubuntu 20.04.3 LTS
1. 通常的配置步骤
- 打开系统对进程文件描述符的限制
sudo vim /etc/security/limits.conf
,添加如下内容:root soft nofile 65535 root hard nofile 65535
- 重启
sudo reboot
- 检查设置在
root
用户下是否生效ulimit -n
,- 若不生效
检查/etc/pam.d/login
中是否包含session required pam_limits.so
,没有则添加。其中pam_limits.so
的路径根据视具体情况而定
pam_limits.so
用来加载用户限制配置 /sbin/sysctl -p /etc/sysctl.conf
使其生效
- 若不生效
1.1 其他辅助命令
- 查看
file-max
系统的总限制(ulimit
显示的是对一个进程的限制信息)
cat /proc/sys/fs/file-max
2. tcp其他信息的配置,在/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
使其生效
/sbin/sysctl -p /etc/sysctl.conf
/sbin/sysctl -w net.ipv4.route.flush=1
参考Linux下解决高并发socket最大连接数限制,tcp默认1024个连接
2.1 其他辅助命令
- 查看端口范围,可用于对外通信的端口范围
cat /proc/sys/net/ipv4/ip_local_port_range
- 查看
net
的相关配置
/proc/sys/net/
下的相关内容,如core
、ipv4
目录
3. Ubuntu 18.04及以上
-
/etc/systemd/user.conf
and/etc/systemd/system.conf
添加 DefaultLimitNOFILE=65535
或
sed -i '/DefaultLimitNOFILE/c DefaultLimitNOFILE=65535' /etc/systemd/*.conf
图形模式下这些配置会影响到socket
的连接数 -
生效
systemctl daemon-reexec
-
重启
sudo reboot
4. 其他辅助命令
-
查看当前有多少个TCP连接到当前服务器命令:
netstat -antp |grep -i est |wc -l
-
获取当前系统的模式
systemctl get-defaul
multi-user.target
为文本模式
graphical.target
为图形模式- 设置为图形模式
systemctl set-default graphical.target
- 设置为命令行模式
systemctl set-default multi-user.target
- 设置为图形模式