压测Nginx时对Linux内核参数优化,以支持更高的并发

Linux内核参数优化

编辑/etc/sysctl.conf文件

fs.file-max = 999999
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.ip_local_port_range = 1024  61000
net.ipv4.tcp_rmem = 4096  32768  262142
net.ipv4.tcp_wmem = 4096  32768  262142
net.core.netdev_max_backlog = 8096
net.core.rmem_default = 262144
net.core.wmem_default = 262144
net.core.rmem_max = 2097152
net.core.wmem_max = 2097152
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 1024

保存上述配置并执行 sysctl -p 使其生效。

参数意义解析

  • fs.file-max:单个进程可以同时打开的最大句柄数,这将直接影响最大并发连接数。
  • net.ipv4.tcp_tw_reuse:设置为1,表示允许将TIME-WAIT状态的socket重新用于新的TCP连接。
  • net.ipv4.tcp_keepalive_time:表示当keepalive启用时,TCP发送keepalive消息的频率。默认是2小时。设置小一些可以更快的清理无效的连接。
  • net.ipv4.tcp_fin_timeout:表示当FIN-WAIT-2状态的最大时间。
  • net.ipv4.tcp_max_tw_buckets:表示操作系统允许TIME_WAIT套接字数量的最大值。该参数的默认值是180000。
  • net.ipv4.ip_local_port_range:表示本地使用UDP和TCP端口的取值范围。
  • net.ipv4.tcp_rmem:表示TCP接受缓存的最小值、默认值、最大值。(是一个TCP的recv滑动窗口)
  • net.ipv4.tcp_wmem:表示TCP发送缓存的最小值、默认值、最大值。(是一个TCP的send滑动窗口)
  • net.core.netdev_max_backlog:当网卡接收数据包的速度大于内核处理的速度时,会有一个队列保存这些数据包。该参数表示队列的最大值。
  • net.core.rmem_default:表示内核socket接受缓存区的默认大小。
  • net.core.wmem_default:表示内核socket发送缓存区的默认大小。
  • net.core.rmem_max:表示内核socket接受缓存区的最大大小。
  • net.core.wmem_max:表示内核socket发送缓存区的默认大小。
  • net.ipv4.tcp_syncookies:用于解决TCP的SYN攻击。
  • net.ipv4.tcp_max_syn_backlog:该参数表示TCP三次握手建立连接时接受SYN请求队列的最大长度,默认为1024,若值设置过大可能导致Nginx繁忙来不及accept新的连接。

注意事项

  • 滑动窗口的大小与socket缓存区会在一定程度上影响并发连接数。每个TCP连接都会为维护TCP滑动窗口而消耗内存,这个窗口会根据服务器的处理速度收缩或扩张。
  • 参数net.core.wmem_max的设置,需要平衡物理内存的总大小、Nginx并发处理的最大连接数量确定的。(最大连接数由nginx.conf中的worker_processes和worker_connections参数决定)
  • 提高并发量服务器必然会出现内存不足(out of memory)的问题,此时不建议使用降低滑动窗口大小的方式来缓解内存问题,因为滑动窗口过小会导致大量数据的传输速度变慢。
  • rmem_default、wmem_default、rmem_max、wmem_max这四个参数的设置需要根据业务特性以及实际的硬件成本来综合考虑。
  • 12
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值