调大打开文件数 / nofile
-
查看系统限制
# 系统最大打开文件数 cat /proc/sys/fs/file-max # 单进程最大打开文件数 cat /proc/sys/fs/nr_open
-
修改系统限制(非必需不推荐)
cat << EOF >> /etc/sysctl.conf fs.file-max = 10485760 fs.nr_open = 10485760 EOF sysctl -p
-
查看用户最大打开文件数
ulimit -a
-
设置用户最大打开文件数
cat << EOF >> /etc/security/limits.conf * soft nofile 200000 * hard nofile 204800 EOF
规则:nofile =< file-max,nofile =< nr_open
调大打开进程数 / nproc
- 设置用户最大打开进程数
cat << EOF >> /etc/security/limits.d/20-nproc.conf * soft nproc 100000 * hard nproc 102400 EOF
调大NAT哈希表 / nf_conntrack
-
查看
# 查看哈希表大小 sysctl net.netfilter.nf_conntrack_buckets # 查看最大跟踪连接数,默认 nf_conntrack_buckets * 4 sysctl net.netfilter.nf_conntrack_max # 查看当前跟踪连接数 sysctl net.netfilter.nf_conntrack_count # 查看跟踪连接详情 tail -n 10 /proc/net/nf_conntrack
注:nf_conntrack_count(当前跟踪连接数)大于nf_conntrack_buckets(哈希表大小)的80%时,哈希冲突的概率增大,会出现性能问题,建议扩容
-
扩容哈希表
# 修改哈希表大小 echo 262144 > /sys/module/nf_conntrack/parameters/hashsize echo "echo 262144 > /sys/module/nf_conntrack/parameters/hashsize" >> /etc/rc.d/rc.local # 修改最大跟踪连接数 echo "net.netfilter.nf_conntrack_max = 1048576" >> /etc/sysctl.conf sysctl -p
调大半连接、全连接队列
# 修改半连接队列
echo "net.ipv4.tcp_max_syn_backlog = 8192" >> /etc/sysctl.conf
# 修改全连接队列
echo "net.core.somaxconn = 10240" >> /etc/sysctl.conf
sysctl -p
调小TCP TIME_WAIT连接数
echo 'net.ipv4.tcp_max_tw_buckets = 5000' >> /etc/sysctl.conf
sysctl -p
调大TCP内存限制 / 待确认
-
查看
# 查看TCP读取缓冲内存 cat /proc/sys/net/ipv4/tcp_rmem 4096 87380 6291456 # 查看TCP发送缓冲内存 cat /proc/sys/net/ipv4/tcp_wmem 4096 16384 4194304
三个值分别代表min、default、max,单位是byte
# 查看TCP内存 cat /proc/sys/net/ipv4/tcp_mem 378843 505126 757686
三个值分别代表low pressure high,单位是page,一般1page=4096byte,换算后分别是1.5G 2G 3G
-
修改
主机内存16G,配置TCP内存最大为8Gcat << EOF >> /etc/sysctl.conf net.ipv4.tcp_mem = 1000000 1500000 2000000 net.ipv4.tcp_rmem = 4096 4096 8192000 net.ipv4.tcp_wmem = 4096 4096 8192000 EOF sysctl -p
调大系统消息队列
如果用到IPC消息队列,可调整此参数
cat << EOF >> /etc/sysctl.conf
kernel.msgmni = 4096000
kernel.msgmax = 20480000
kernel.msgmnb = 1073741824
EOF
# 生效
sysctl -p
# 查看
ipcs -l
msgmni:消息队列数目,CentOS 7.8之后可能设置失败
msgmax:单个消息最大大小(bytes)
msgmnb:消息队列最大大小(bytes)