Linux高并发服务器内核优化

2022-07-16 15:47:15 浏览数 (1)

性能调优要根据自己的情况逐渐调整,往往结合系统监控和性能压力测试一起进行。不可不调,不可乱调。

你可以在https://www.kernel.org/doc/html/latest/admin-guide/sysctl/index.html

官方去看也有文档

性能调优有两个原则:遵从由上之下,木板补板的原则

性能调优遵循由上至下的原则。

业务逻辑->缓存服务器->调度器->网络容器->中间件->NOSQL->SQL->存储->网络->硬件->操作系统->内核。

往往在业务层、和缓存策略、网络容器、中间件的优化效果最是明显。层级越高效果越好。

通用内核优化参数

代码语言:javascript复制
# 指示进程(例如工作进程)可同时打开的最大句柄数,直接限制并发连接的最大数量。
# 默认值:fs.file-max = 141079
fs.file-max = 655350

# 启用keepalive时,TCP发送keepalive消息的频率。默认值为2小时。将其调低一点以更快地删除无用的连接
# 默认值:net.ipv4.tcp_keepalive_time = 7200
net.ipv4.tcp_keepalive_time = 1200

# 当服务器主动关闭链接时,套接字保持FN-WAIT-2状态的最大时间
# 默认值:net.ipv4.tcp_fin_timeout = 60
net.ipv4.tcp_fin_timeout = 30

# 该参数决定了,网络设备接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目。
# 默认值:net.core.netdev_max_backlog = 1000
net.core.netdev_max_backlog = 8192

# 每个套接字允许的最大辅助缓冲区大小。辅助数据是带有附加数据的结构cmsghdr结构的序列。
# 默认值:net.core.optmem_max = 20480
net.core.optmem_max = 81920

# 指定了接收套接字缓冲区大小的最大值(以字节为单位)。
# 默认值:net.core.rmem_default = 212992
net.core.rmem_default = 262144

# 允许最大数量的TIME-WAIT套接字。超过几位数,TIME-WAIT套接字将立即清除,并显示警告消息。默认值为8192,太多的TIME-WAIT套接字会减慢Web服务器的速度
# 默认值:net.ipv4.tcp_max_tw_buckets = 8192
net.ipv4.tcp_max_tw_buckets = 5000

# TCP接收/发送缓存最小值,默认值,最大值
# 默认值:net.ipv4.tcp_rmem = 4096  131072  6291456
net.ipv4.tcp_rmem = 4096  32768  262142
# 默认值:net.ipv4.tcp_wmem = 4096  16384   4194304
net.ipv4.tcp_wmem = 4096  32768  262142

# Socket接收/发送缓存最大值
# 默认值均为:212992
net.core.rmem_max = 4194304
net.core.wmem_max = 4194304

# 启用syncookies有助于防御dos攻击,会少量增加CPU使用率,默认启用
net.ipv4.tcp_syncookies = 1

# 接受SYN同步包的最大客户端数量,即半连接上限,128M内存情况下是缺省值1024
默认值:net.ipv4.tcp_max_syn_backlog = 1024
net.ipv4.tcp_max_syn_backlog = 8192

# 服务端所能accept即处理数据的最大客户端数量,即完成连接上限
默认值:net.core.somaxconn = 1024
net.core.somaxconn = 10240

0 人点赞