主机内核优化
操作系统初始化或者压测时需要进行参数的修改,以下是各类文档与线上经验的参数总结。如有问题,请指出
系统优化参数比如长连接配置,ipv4优化。
Linux
最大文件限制数 ulimit
1)修改当前交互终端的limit值。查询当前终端的文件句柄数: ulimit -n 回车,一般的系统默认的1024。修改文件句柄数为65535,ulimit -n 65535。此时系统的文件句柄数为65535。
2)将ulimit 值添加到/etc/profile文件中为了每次系统重新启动时,都可以获取更大的ulimit值,将ulimit 加入到/etc/profile 文件底部。
echo ulimit -n 65535 >>/etc/profile
source /etc/profile #加载修改后的profile
ulimit -n #显示65535,修改完毕!
IPV4优化
用vim打开配置文件:
#vim /etc/sysctl.conf
加入下面的几行内容:
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.ip_local_port_range = 10000 65000
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 5000
net.core.somaxconn=4000
如果网络性能明显低于预期值,可以修改系统配置文件/etc/sysctl.conf
尝试调整以下内核参数:
# Controls the maximum number of shared memory segments, in pages
kernel.shmall = 4294967296
net.ipv4.tcp_keepalive_time = 300
net.core.netdev_max_backlog = 100000
net.ipv4.tcp_max_syn_backlog = 204800
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 87380 16777216
输入下面的命令,让内核参数生效:
#/sbin/sysctl -p
参数含义:
1)net.ipv4.tcp_syncookies = 1 表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;
2)net.ipv4.tcp_tw_reuse = 1 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;
3)net.ipv4.tcp_tw_recycle = 1 表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭;
4)net.ipv4.tcp_fin_timeout 修改系統默认的 TIMEOUT 时间
5)net.ipv4.tcp_keepalive_time = 1200 表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,改为20分钟
6)net.ipv4.ip_local_port_range = 10000 65000 表示用于向外连接的端口范围。缺省情况下很小:32768到61000,改为10000到65000。(注意:这里不要将最低值设的太低,否则可能会占用掉正常的端口!)
7)net.ipv4.tcp_max_syn_backlog = 8192 表示SYN队列的长度,默认为1024,加大队列长度为8192,可以容纳更多等待连接的网络连接数。
8)net.ipv4.tcp_max_tw_buckets = 5000 表示系统同时保持TIME_WAIT的最大数量,如果超过这个数字,TIME_WAIT将立刻被清除并打印警告信息。默 认为180000,改为5000。对于Apache、Nginx等服务器,上几行的参数可以很好地减少TIME_WAIT套接字数量,但是对于 Squid,效果却不大。此项参数可以控制TIME_WAIT的最大数量,避免Squid服务器被大量的TIME_WAIT拖死。
swap区建议关闭
查看参数值:
cat /proc/sys/vm/swappiness
临时调整:
sysctl vm.swappiness = 0
cat /proc/sys/vm/swappiness
永久调整:
vi /etc/sysctl.conf
修改vm.swappiness=0
sysctl -p