Nginx优化性能的配置项
|
admin
2025年12月12日 22:47
本文热度 56
|
Nginx性能优化可以通过调整以下配置项来实现,涵盖网络、缓存、并发、连接管理等多个方面:
1. Worker相关配置
worker 进程数默认为 1 ,单进程最大连接数为1024。
这些配置决定了Nginx处理请求的能力:
worker_processes
设置Nginx工作进程的数量,一般配置为服务器CPU核心数。
worker_processes auto;
worker_connections
每个worker进程可以处理的最大并发连接数。
worker_connections 1024;
理论最大并发连接数 = worker_processes x worker_connections
worker_cpu_affinity
设置nginxCPU亲缘性绑定。如果多个 worker 进程都在抢同一个 CPU,那么这就会出现同步问题。反之,如果每一个 worker 进程都独享一个 CPU,就在内核的调度策略上实现了完全的并发。
# `8`颗`CPU`内核,可进行如下配置
worker_processes 8;
worker_cpu_affinity 00000001 00000010 00000100 0000100000010000 00100000 01000000 10000000;
2. 网络优化
keepalive_timeout
设置客户端连接的保持时间,过短会增加TCP重建开销,过长可能浪费资源。
keepalive_timeout 30; # 单位是秒,超时时间设得长一些
sendfile
作为web服务器的时候打开sendfile加快静态文件传输,俗称零拷贝,在内核空间交换文件。启用零拷贝机制,提高文件传输效率。
sendfile on;
tcp_nopush 和 tcp_nodelay
tcp_nopush on;
tcp_nodelay on;
tcp_nopush: 减少网络包的数量,提高传输效率(适用于大文件传输)。tcp_nodelay: 避免小数据包的延迟发送(适用于实时数据)。
3. 缓存优化
proxy_cache
启用反向代理缓存,减少后端服务器压力。
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off;
proxy_cache my_cache;
proxy_buffers
配置缓存缓冲区的数量和大小。
proxy_buffers 16 4k;
4. 压缩优化
gzip 启用压缩以减少数据传输量:gzip on;
gzip_min_length 1024;
gzip_types text/plain application/json application/javascript text/css;
5. 日志管理
日志过多会消耗I/O资源:
- 减少日志级别:
error_log /var/log/nginx/error.log warn;
access_log off;
6. 超时时间
client_body_timeout 和 client_header_timeout
设置客户端请求头和请求体的超时时间:
client_body_timeout 10s;
client_header_timeout 10s;
send_timeout
设置服务器向客户端发送响应的超时时间:
send_timeout 30s;
7. 负载均衡优化
upstream
配置如轮询(默认)、最少连接、IP hash等负载均衡算法:
upstream backend {
least_conn;
server backend1.example.com;
server backend2.example.com;
}
8. 限制连接和请求
limit_conn 和 limit_req
限制单个IP的连接数和请求速率:
limit_conn_zone $binary_remote_addr zone=conn_limit:10m;
limit_conn conn_limit 20;
limit_req_zone $binary_remote_addr zone=req_limit:10m rate=10r/s;
limit_req zone=req_limit burst=20;
9. 允许Nginx进程打开文件数上限
增加Nginx允许打开的文件描述符数量:
- 在Nginx配置中:
worker_rlimit_nofile 10240;
- 系统级别:调整
ulimit或/etc/security/limits.conf。
实际的并发连接数不能超过系统级别的最大打开文件数的限制,与ulimit -n 或者limits.conf的值保持一致
10. SSL优化
启用和优化SSL性能:
ssl_session_cache 和 ssl_session_timeoutssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
- 启用HTTP/2以提升多路复用能力:
listen 443 ssl http2;
阅读原文:原文链接
该文章在 2025/12/13 8:56:49 编辑过