提示:这里很多配置在系统重启之后需要重新配置,可以参照你的操作系统进行持久配置或者启动之后运行脚本。
注意:这里的系统优化也会依赖于硬件和软件环境和不同的负载。这里的优化在重载系统和快速IO系统中比较明显,但是也只是在有限的硬件和软件系统中测试过。在我们的环境(Fedora29)里的配置步骤如下:
1. 禁用防火墙
#service firewalld stop; systemctl mask firewalld
2. 禁用SELinux
- #vim /etc/selinux/config
- 修改SELINUX=enforcing为SELINUX=disabled
3. 启用latency-performance低延迟的性能模式
- #yum install -y tuned
- #tuned-adm profile latency-performance
使用以下命令查看配置的结果
- #cat /etc/tuned/active_profile
- 结果为latency-performance
- #cat /etc/tuned/profile_mode
- 结果为manual
4. 设置CPU调整频率模式为performance
#cpupower frequency-set -g performance
5. 禁用irqbalance服务
#systemctl stop irqbalance
6. 配置操作系统参数来处理增加的数据包速率
a. 增加socket侦听队列的连接请求的最大数目,该配置再重启后会失效,参数值重新恢复成默认的128
#sysctl -w net.core.somaxconn=4096
b. 当特定接口接收数据包的速度快于内核处理数据包的速度时,增加允许排队的最大数据包数目
#sysctl -w net.core.netdev_max_backlog=8192
c. 指定所能接受SYN同步包的最大客户端数量
#sysctl -w net.ipv4.tcp_max_syn_backlog=16384
d. 增加发送和接受套接字缓冲区大小的最大值
- #sysctl -w net.core.rmem_max=16777216
- #sysctl -w net.core.wmem_max=16777216
e. 确定TCP栈应该如何反映内存使用,每个值的单位都是内存页(通常是4KB)。第一个值是内存使用的下限;第二个值是内存压力模式开始对缓冲区使用应用压力的上限;第三个值是内存使用的上限。在这个层次上可以将报文丢弃,从而减少对内存的使用。示例中第一个值为786432*4/1024/1024=3G,第二个值为1019584*4/1024/1024=3.9G,第三个值为16777216*4/1024/1024=64G
#sysctl -w net.ipv4.tcp_mem=”764688 1019584 16777216”
f. 自动调优定义socket使用的内存,第一个值是为socket接收/发送缓冲区分配的最少字节数;第二个值是默认值(该值会被rmem_default/wmem_default覆盖),缓冲区在系统负载不重的情况下可以增长到这个值;第三个值是接收/发送缓冲区空间的最大字节数(该值会被rmem_max/wmem_max覆盖)
- #sysctl -w net.ipv4.tcp_rmem=”8192 87380 16777216”
- #sysctl -w net.ipv4.tcp_wmem=”8192 65536 16777216”
g. 允许分配所有的物理内存
#sysctl -w vm.overcommit_memory=1
h. 禁用透明大页
#echo never > /sys/kernel/mm/transparent_hugepage/enabled
以上所有系统优化的步骤总结在以下脚本里(除了禁用SELinux的命令)
- service firewalld stop
- systemctl mask firewalld
- tuned-adm profile latency-performance
- cat /etc/tuned/active_profile
- cat /etc/tuned/profile_mode
- cpupower frequency-set -g performance
- systemctl stop irqbalance
- sysctl -w net.core.somaxconn=4096
- sysctl -w net.core.netdev_max_backlog=8192
- sysctl -w net.ipv4.tcp_max_syn_backlog=16384
- sysctl -w net.core.rmem_max=16777216
- sysctl -w net.core.wmem_max=16777216
- sysctl -w net.ipv4.tcp_mem="764688 1019584 16777216"
- sysctl -w net.ipv4.tcp_rmem="8192 87380 16777216"
- sysctl -w net.ipv4.tcp_wmem="8192 65536 16777216"
- sysctl -w vm.overcommit_memory=1
- echo never > /sys/kernel/mm/transparent_hugepage/enabled