内核参数优化
sysctl 设置
kernel name | 描述 | 建议值(value) |
---|---|---|
kernel.shmall | 设置系统中共享内存段的总页数 | 16380388 |
kernel.shmmax | 设置系统中单个共享内存段的最大大小 | 16773517312 |
vm.swappiness | 调整系统在内存吃紧时候对交换空间(swap)的利用程度。 | 1 |
vm.dirty_background_ratio | 控制系统在后台将脏数据写入磁盘的阈值 | 3 |
vm.dirty_ratio | 控制系统在前台将脏数据写入磁盘的阈值。 | 80 |
vm.dirty_expire_centisecs | 控制系统中脏数据的过期时间。 | 500 |
vm.dirty_writeback_centisecs | 控制脏数据写回的频率。 | 100 |
fs.aio-max-nr | 限制异步 I/O操作的数量。 | 3145728 |
fs.file-max | 限制系统中打开的文件描述符的数量。 | 6815744 |
kernel.shmmni | 系统中共享内存标识符的最大数量。 | 4096 |
kernel.sem | 配置系统中的信号量机制。 | 250 32000 100 128 |
net.ipv4.ip_local_port_range | 可供系统动态分配的本地端口范围 | 9000 65500 |
net.core.rmem_default | 系统中套接字接收缓冲区的默认大小(以字节为单位)。 | 262144 |
net.core.rmem_max | 系统中套接字接收缓冲区的最大大小(以字节为单位)。 | 4194304 |
net.core.wmem_default | 系统中套接字发送缓冲区的默认大小(以字节为单位)。 | 262144 |
net.core.wmem_max | 系统中套接字发送缓冲区的最大大小(以字节为单位)。 | 1048586 |
net.core.somaxconn | 系统中监听套接字的最大队列长度。 | 4096 |
net.ipv4.tcp_max_syn_backlog | 半连接队列的最大长度,等待完成三次握手的连接的最大数量。 | 4096 |
net.ipv4.tcp_keepalive_intvl | TCP keepalive消息的发送间隔,单位为秒。 | 20 |
net.ipv4.tcp_keepalive_probes | 在认定连接失效之前,内核发送 TCP keepalive 消息的次数。 | 3 |
net.ipv4.tcp_keepalive_time | TCP keepalive功能的启动时间。 | 60s |
net.ipv4.tcp_mem | TCP socket 接收缓冲区的内存分配策略。单位字节 | 8388608 12582912 16777216 |
net.ipv4.tcp_fin_timeout | TCP连接的FIN-WAIT-2状态结束之后,内核将等待确认FIN的时间(以秒为单位)。 | 5 |
net.ipv4.tcp_synack_retries | 发送SYN-ACK之后等待接收到ACK的重试次数。 | 2 |
net.ipv4.tcp_syncookies | 启用或禁用TCP SYN cookies。 | 1 |
net.ipv4.tcp_tw_recycle | 控制是否启用 TIME-WAIT 状态的快速回收 | 0 |
Limit 设置
Limit name | 描述 | 建议值(value) |
---|---|---|
* soft nofile | 每个用户会话打开的文件描述符数量的软限制。单位是文件描述符(file descriptors) | 1024000 |
* hard nofile | 每个用户会话打开的文件描述符数量的硬限制。单位是文件描述符(file descriptors) | 1024000 |
* soft nproc | 所有用户的软限制进程数量设置为无限制 | unlimited |
* hard nproc | 所有用户的硬限制进程数量设置为无限制 | unlimited |
* soft core | 所有用户的软限制核心转储文件大小设置为无限制 | unlimited |
* hard core | 所有用户的硬限制核心转储文件大小设置为无限制 | unlimited |
* soft memlock | 所有用户的软限制锁定内存的大小设置为无限制 | unlimited |
* hard memlock | 所有用户的硬限制锁定内存的大小设置为无限制 | unlimited |
一键写入并生效
cat > kernel_optimize.sh << EOF
cp -i /etc/sysctl.conf /etc/sysctl.conf-`date +%Y%m%d-%H%M%S`
shmall=`awk '($1 == "MemTotal:"){print $2}' /proc/meminfo`
shmmax=`expr $shmall \* 1024`
# kernel.shmall = 2097152 --(物理内存G*1024*1024)
# kernel.shmmax = 536870912 --(物理内存G*1024*1024*1024)
# kernel.shmall = 2097152
# kernel.shmmax = 2147483648
echo "kernel.shmall = $shmall" >> /etc/sysctl.conf
echo "kernel.shmmax = $shmmax" >> /etc/sysctl.conf
echo 'vm.swappiness = 1' >> /etc/sysctl.conf
echo 'vm.dirty_background_ratio = 3' >> /etc/sysctl.conf
echo 'vm.dirty_ratio = 80' >> /etc/sysctl.conf
echo 'vm.dirty_expire_centisecs = 500' >> /etc/sysctl.conf
echo 'vm.dirty_writeback_centisecs = 100' >> /etc/sysctl.conf
echo 'fs.aio-max-nr = 3145728' >> /etc/sysctl.conf
echo 'fs.file-max = 6815744' >> /etc/sysctl.conf
echo 'kernel.shmmni = 4096' >> /etc/sysctl.conf
echo 'kernel.sem = 250 32000 100 128' >> /etc/sysctl.conf
echo 'net.ipv4.ip_local_port_range = 9000 65500' >> /etc/sysctl.conf
echo 'net.core.rmem_default = 262144' >> /etc/sysctl.conf
echo 'net.core.rmem_max = 4194304' >> /etc/sysctl.conf
echo 'net.core.wmem_default = 262144' >> /etc/sysctl.conf
echo 'net.core.wmem_max = 1048586' >> /etc/sysctl.conf
echo 'net.core.somaxconn = 4096' >> /etc/sysctl.conf
echo 'net.ipv4.tcp_max_syn_backlog = 4096' >> /etc/sysctl.conf
echo 'net.ipv4.tcp_keepalive_intvl = 20' >> /etc/sysctl.conf
echo 'net.ipv4.tcp_keepalive_probes = 3' >> /etc/sysctl.conf
echo 'net.ipv4.tcp_keepalive_time = 60' >> /etc/sysctl.conf
echo 'net.ipv4.tcp_mem = 8388608 12582912 16777216' >> /etc/sysctl.conf
echo 'net.ipv4.tcp_fin_timeout = 5' >> /etc/sysctl.conf
echo 'net.ipv4.tcp_synack_retries = 2' >> /etc/sysctl.conf
echo 'net.ipv4.tcp_syncookies = 1' >> /etc/sysctl.conf
echo 'net.ipv4.tcp_tw_recycle = 0 ' >> /etc/sysctl.conf
echo "\n\e[1;31m 检查:设置内核参数 ... 操作完成! \e[0m"
/sbin/sysctl -p > /dev/null 2>&1
EOF
执行脚本
sh kernel_optimize.sh
注意:因机器性能不同,kernel.shmall和kernel.shmmax需用计算后才能填入。
计算公式:
1. kernel.shmall
awk '($1 == "MemTotal:"){print $2}' /proc/meminfo
2. kernel.shmmax
expr shmall \* 1024
仅登录用户可评论,点击 登录