优化体系--Linux内核优化篇
概述
所谓Linux服务器内核参数优化(适合Apache、Nginx、Squid等多种web应用,特殊的业务有可能需要做略微调整),主要是指在Linux系统中针对业务服务应用而进行的系统内核参数调整,优化并无一定的标准。
下面分两个部分来介绍内核优化这一块,第一部分主要讲内核配置文件,大家根据需要做取舍就行,第二部分是我经常会在压测高并发时做的一些内核优化,仅供参考。
一、内核配置文件
1、tcp套接字方面
#保持在FIN-WAIT-2状态的时间,使系统可以处理更多连接。此参数值为整数,单位为秒。
net.ipv4.tcp_fin_timeout = 2
#开启重用,允许将TIME_WAIT socket用于新的TCP连接。默认为0,表示关闭。
net.ipv4.tcp_tw_reuse = 1
#开启TCP连接中TIME_WAIT socket的快速回收。默认值为0,表示关闭。
net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_syn_retries=1
#开启SYN cookie,出现SYN等待队列溢出时启用cookie处理,防范少量的SYN攻击。默认为0,表示关闭。
net.ipv4.tcp_syncookies = 1
#表示SYN队列的长度,预设为1024,这里设置队列长度为262 144,以容纳更多等待连接。
net.ipv4.tcp_max_syn_backlog = 262144
#系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数值将立刻被清楚并输出警告信息。默认值为180000。对于squid来说效果不是很大,但可以控制TIME_WAIT套接字最大值,避免squid服务器被拖死。
net.ipv4.tcp_max_tw_buckets =5000
#表示系统中最多有多少TCP套接字不被关联到任何一个用户文件句柄上。如果超过这里设置的数字,连接就会复位并输出警告信息。这个限制仅仅是为了防止简单的DoS攻击。此值不能太小。
net.ipv4.tcp_max_orphans = 16384
# 增加TCP最大缓冲区大小
net.ipv4.tcp_rmem=4096 87380 4194304 net.ipv4.tcp_wmem=4096 16384 4194304
2、keepalived方面
#keepalived启用时TCP发送keepalived消息的拼度。默认2小时。
net.ipv4.tcp_keepalive_time = 600
#TCP发送keepalive探测以确定该连接已经断开的次数。根据情形也可以适当地缩短此值。
net.ipv4.tcp_keepalive_probes = 5
#探测消息发送的频率,乘以tcp_keepalive_probes就得到对于从开始探测以来没有响应的连接杀除的时间。默认值为75秒,也就是没有活动的连接将在大约11分钟以后将被丢弃。对于普通应用来说,这个值有一些偏大,可以根据需要改小.特别是web类服务器需要改小该值。
net.ipv4.tcp_keepalive_intvl = 15
3、端口方面
#指定外部连接的端口范围。默认值为32768 61000。
net.ipv4.ip_local_port_range = 1024 65000
#定义了系统中每一个端口最大的监听队列的长度, 对于一个经常处理新连接的高负载 web服务环境来说,默认值为128,偏小。
net.core.somaxconn = 16384
#表示当在每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许发送到队列的数据包的最大数量。
net.core.netdev_max_backlog = 16384
#避免放大攻击
net.ipv4.icmp_echo_ignore_broadcasts=1
PS:修改生效
vi /etc/sysctl.conf
增加合适参数后生效配置
sysctl -p
二、压测调优参数参考
# 允许等待中的监听, 设置系统最大socket连接数
echo 50000 >/proc/sys/net/core/somaxconn
#tcp连接快速回收:0-不加快tcp回收 1-加快tcp回收
echo 1 >/proc/sys/net/ipv4/tcp_tw_recycle
# tcp连接重用 :0-不启用空tcp回收 1-空tcp回收
echo 1 >/proc/sys/net/ipv4/tcp_tw_reuse
#不抵御洪水攻击:0-去除洪水攻击抵御 1-启用洪水攻击抵御
echo 0 >/proc/sys/net/ipv4/tcp_syncookies
#设置系统最大文件访问数量
echo "ulimit -n 50000" >> /etc/profile source /etc/profile
#设置用户最大进程数
vi /etc/security/limits.conf
oracle soft nproc 16384 oracle hard nproc 16384
关于linux内核优化这一块的内容就讲到这了,大家根据需要去做取舍就行,特别是系统有高并发业务时,可以考虑适当去做优化。
后面会分享更多关于优化体系这一块的内容,感兴趣的朋友可以关注下!!