Nginx负载的参数优化

作者:IT技术圈子 浏览量:146   更新于 2024-10-17 19:36 标签:

Nginx 是一个高性能的 HTTP 和反向代理服务器,它的优化可以提升网站的性能和稳定性。

以下是一些基于搜索结果的 Nginx 负载参数优化经验分享。

No.1 Worker Processes

worker_processes auto; # 自动设置与 CPU 核心数相同的进程数

这个指令用来设置 Nginx 运行的工作进程数。通常情况下,每个 CPU 核心分配一个工作进程可以取得较好的性能。

No.2 Worker CPU Affinity

worker_cpu_affinity 0001 0010 0100 1000; # 为每个工作进程分配特定的 CPU 核心

通过为每个工作进程分配特定的 CPU 核心,可以提高 CPU 缓存的效率,减少进程间的上下文切换。

No.3 Worker Connections

worker_connections 10240; # 每个工作进程的最大连接数

这个指令定义了每个工作进程可以打开的最大连接数,默认值通常是 512,但现代服务器硬件通常可以处理更高的连接数。

No.4 Events Configuration

use epoll; # 在 Linux 上使用高效的 I/O 多路复用模型
events {
worker_connections 10240; # 每个工作进程可以同时处理的连接数
}

`use epoll;` 指定了事件处理模型,在 Linux 系统上,epoll 是一个高性能的 I/O 多路复用模型。

No.5 Sendfile

sendfile on; # 开启高效文件传输模式

`sendfile` 指令用于启用高效文件传输模式,可以减少 CPU 开销,因为它允许操作系统直接传输文件数据到网络,而不需要复制到用户空间。

No.6 TCP Nopush

tcp_nopush on; # 结合 Sendfile 使用,减少网络报文段的数量

`tcp_nopush` 指令用于确保数据在发送到网络之前被缓存,与 `sendfile` 结合使用可以提高网络传输效率。

No.7 Keepalive Timeout

keepalive_timeout 65; # 长连接超时时间

`keepalive_timeout` 设置了长连接的超时时间,可以根据服务器的业务需求进行调整。

No.8 Gzip Compression

gzip on; # 开启 Gzip 压缩
gzip_min_length 1k; # 页面字节数小于 1k 不压缩
gzip_buffers 4 32k; # 设置压缩缓冲区大小
gzip_http_version 1.1; # 设置压缩版本
gzip_comp_level 6; # 设置压缩级别
gzip_types text/css text/xml application/javascript; # 设置需要压缩的 MIME 类型

通过启用 Gzip 压缩,可以减少传输的数据量,加快页面加载速度。但要注意,对小文件进行压缩可能不会减少其大小。

No.9 Proxy Settings

proxy_connect_timeout 90; # 代理连接超时时间
proxy_send_timeout 90; # 代理发送超时时间
proxy_read_timeout 90; # 代理读取超时时间
proxy_buffers 4 32k; # 设置代理缓冲区大小

这些指令用于调整代理服务器的超时设置和缓冲区大小,可以根据后端服务器的性能进行调整。

No.10 Linux System Tuning

net.core.somaxconn = 262144 # 调整系统同时发起的tcp连接数
net.ipv4.tcp_tw_recycle = 1 # 启用 TCP 连接重用
net.ipv4.tcp_fin_timeout = 15 # 减少临时端口的等待时间

调整 Linux 系统内核参数可以提升服务器的网络性能。

No.11 Access Log Buffering

access_log /var/log/nginx/access.log main buffer=16k flush=5m; # 使用缓冲区记录访问日志

通过设置日志缓冲区,可以减少磁盘 I/O 操作,提高性能。

No.12 Limitations

limit_conn perip 2; # 限制单个 IP 地址的连接数
limit_rate 300k; # 限制单个连接的速率

使用 `limit_conn` 和 `limit_rate` 可以限制客户端的连接数和带宽使用,防止单个客户端占用过多资源。