千家信息网

Nginx配置文件的优化

发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,Nginx配置文件中需要优化的参数为以下几项:worker_processes 8;Nginx配置文件进程数,可以按照cpu数目来指定,一般为它的倍数。worker_cpu_affinity 0000
千家信息网最后更新 2026年11月04日Nginx配置文件的优化

Nginx配置文件中需要优化的参数为以下几项:

worker_processes 8;

Nginx配置文件进程数,可以按照cpu数目来指定,一般为它的倍数。

worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;

为每个进程指定一个cpu,上例中将8个进程分配到8个cpu,也可以将一个进程分配到多个cpu。

worker_rlimit_nofile 102400;

Nginx进程打开的最多文件描述符数目,与ulimit -n的值保持一致。

use epoll;

使用epoll的I/O模型。

worker_connections 102400;

每个进程的最大连接数,理论上每台Nginx服务器的最大连接数为worker_processes*worker_connections。

keepalive_timeout 60;

keepalive超时时间。

client_header_buffer_size 4k;

客户端请求头部的缓冲区大小,可以根据系统分页大小来设置,页大小可以用命令getconf PAGESIZE取得。

open_file_cache max=102400 inactive=20s;

打开文件指定缓存,默认没有启用,max指定缓存数量,建议和打开文件数一致,inactive是指经过多长时间文件没被请求后删除缓存。

open_file_cache_valid 30s;

这个是指多长时间检查一次缓存的有效信息。

open_file_cache_min_uses 1;

open_file_cache指令中的inactive参数时间内文件的最少使用次数,如果超过这个数字,文件描述符一直是在缓存中打开的,如上例,如果有一个文件在inactive时间内一次没被使用,它将被移除。

关于内核参数的优化:

net.ipv4.tcp_max_tw_buckets = 6000

timewait的数量,默认是180000。

net.ipv4.ip_local_port_range = 1024 65000

允许系统打开的端口范围。

net.ipv4.tcp_tw_recycle = 1

启用timewait快速回收。

net.ipv4.tcp_tw_reuse = 1

开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接。

net.ipv4.tcp_syncookies = 1

开启SYN Cookies,当出现SYN等待队列溢出时,启用cookies来处理。

net.core.somaxconn = 262144

web应用中listen函数的backlog默认会给我们内核参数的net.core.somaxconn限制到128,而Nginx定义的NGX_LISTEN_BACKLOG默认为511,所以有必要调整这个值。

net.core.netdev_max_backlog = 262144

每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目。

net.ipv4.tcp_max_orphans = 262144

系统中最多有多少个TCP套接字不被关联到任何一个用户文件句柄上。如果超过这个数字,孤儿连接将即刻被复位并打印出警告信息。这个限制仅仅是为了防止简单的DoS×××,不能过分依靠它或者人为地减小这个值,更应该增加这个值(如果增加了内存之后)。

net.ipv4.tcp_max_syn_backlog = 262144

记录的那些尚未收到客户端确认信息的连接请求的最大值。对于有128M内存的系统而言,缺省值是1024,小内存的系统则是128。

net.ipv4.tcp_syn_retries = 1

在内核放弃建立连接之前发送SYN包的数量。

net.ipv4.tcp_timestamps = 0

时间戳可以避免序列号的卷绕。一个1Gbps的链路肯定会遇到以前用过的序列号。时间戳能够让内核接受这种"异常"的数据包。这里需要将其关掉。

net.ipv4.tcp_synack_retries = 1

为了打开对端的连接,内核需要发送一个SYN并附带一个回应前面一个SYN的ACK。也就是所谓三次握手中的第二次握手。这个设置决定了内核放弃连接之前发送SYN+ACK包的数量。

net.ipv4.tcp_fin_timeout = 1

如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。对端可以出错并永远不关闭连接,甚至意外当机。缺省值是60秒。2.2 内核的通常值是180秒,你可以按这个设置,但要记住的是,即使你的机器是一个轻载的WEB服务器,也有因为大量的死套接字而内存溢出的风险,FIN- WAIT-2的危险性比FIN-WAIT-1要小,因为它最多只能吃掉1.5K内存,但是它们的生存期长些。

net.ipv4.tcp_keepalive_time = 30


文件 内核 时间 进程 内存 参数 缓存 最大 数量 系统 大小 套接字 数据 数目 配置 一致 信息 客户 客户端 序列 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 小米移动互联网科技园 互联网和科技技术 互联网科技有限公司图片 中资互联网科技 智网互联网科技 紫鲸互联网科技 百单互联网科技有限公司 互联网科技小额贷款 滨湖区互联网智能科技产品供应 上海电发互联网科技有限公司 博兴的互联网电子科技公司 茂名市互联网科技产业园 湖南诚度互联网科技有限公司 岳阳华臻互联网科技有限公司 呼和浩特新华互联网科技学院 爱医互联网络科技 群盈汇互联网科技有限公司 云南省自由互联网科技有限公司 北京军民互联网科技公司 恒生科技互联网指数十大成分股 湖南永感互联网科技有限公司 互联网科技有限公司图片 重庆科技学院互联网 新华互联网科技2019 互联网科技实习生岗位职责 工业互联网山东科技大学 互联网科技接地气 艺电能源互联网科技有限公司招聘 河南商务圈互联网科技有限公司 高科技和互联网的现代国家
0