Linux 服务器作为Nginx web服务器常见优化参数

内核参数调整cat /etc/sysctl.conf# sysctl settings are defined through files in

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
#
# Vendors settings live in /usr/lib/sysctl.d/.
# To override a whole file, create a new file with the same in
# /etc/sysctl.d/ and put new settings there. To override
# only specific settings, add a file with a lexically later
# name in /etc/sysctl.d/ and put new settings there.
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
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<br>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

  file-max:这个参数表示进程(比如一个work进程)可同时打开最大句柄数,这个参数直接限制最大并发连接数,需要根据实际情况配置

       tcp_tw_reuse:这个参数设置为1,表示允许将TIME-WAIT状态的socket重新用于新的tcp链接,这个对于服务器而言很有意义,因为服务器上总有大量的TIME-WAIT状态链接

       tcp_keepalive_time : 这个参数表示当keepalive启用时,tcp发送keepalive消息的频度。默认2小时。若将其设置的小一些,可以更快清理无效的链接

       fin_timeout:  这个参数表示当服务器主动关闭连接时,socket保持在FIN-WAIT-2状态的最大时间

       max_tw_buckets: 这个参数表示操作系统允许TIME-WAIT套接字数量的最大值,如果超过这个数字,TIME-WAIT套接字将立刻清除并打印告警信息,该参数默认180000,过多的TIME-WAIT套接字会使服务器变慢

       tcp_max_syn.backlog: 这个参数表示tcp三次握手建立阶段收到SYN请求队列的最大长度,默认1024.将其设置的大一些可以使出现Nginx繁忙来不及accept新连接的情况下,Linux不至于丢失客户端发起的连接请求

       ip_local_port_range: 这个参数定义了在UDP和TCP连接中本地端口取值范围

       net.ipv4.tcp_rmem:定义了TCP接收缓存(tcp接收滑动窗口)的最小值、默认值、最小值

       net.ipv4.tcp_wmem : 定义了TCP发送缓存(tcp发送滑动窗口)的最小值、默认值、最小值

       netdev_max_backlog: 当网卡接收数据包的速度大于内核处理的速度时,会有一个对列保存这些数据包。这个参数表示该对列的最大值

       rmem_default: 这个参数表示内核套接字接收缓存区默认的大小

       wmem_default :这个参数表示内核套接字发送缓存区默认的大小

       rmam_max:这个参数表示内核套接字接收缓冲区的最大值

       wmem_max:这个参数表示内核套接字发送缓冲区的最大值 
注意:滑动窗口的大小与套接字缓存区会在一定程度上影响并发连接数目。每个TCP连接都会为维持TCP滑动窗口而消耗内存,这个窗口会根据服务器的处理速度收缩或扩张。参数wmem_max的设置,需要平衡物理内存大小、Nginx并发处理的最大连接数量(由Nginx。conf中的worker_processes和worker_connections参数决定)而确定。当然如果仅仅是为了提高并发量使服务器出现OutOf Memory 问题而去降低滑动窗口大小。那么并不合适,因为滑动窗口过小会影响大数据传输速率。所以rmem_default、wmem_default、rmam_max、wmam_max这4个参数的设置需要根据实际业务特性和实际硬件成本来综合考虑

        tcp_syncookies: 该参数与性能无关,用于解决tcp的SYN攻击 

       

 

posted @   烟雨楼台,行云流水  阅读(429)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
点击右上角即可分享
微信分享提示