Nginx 是一个高性能的 HTTP 服务器和反向代理服务器,但在高并发场景下,仍然有很多优化手段可以进一步提升其性能。以下是 Nginx 性能优化的常见方式:
Nginx 的并发处理能力主要依赖于 Worker 进程和每个 Worker 进程的连接数。
worker_processes auto; # 自动根据 CPU 核心数设置
events {
worker_connections 1024; # 每个 Worker 进程的最大连接数
}
Keep-Alive 允许复用客户端与服务器之间的连接,减少频繁建立和关闭连接的开销。
keepalive_timeout 65s;
keepalive_requests 1000;
upstream backend {
server 192.168.0.1;
keepalive 32; # 设置与后端服务器的 Keep-Alive 连接池大小
}
Nginx 提供了多个缓冲区设置,合理配置这些缓冲区可以提高性能。
client_body_buffer_size 16k;
client_header_buffer_size 4k;
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g;
location / {
proxy_cache my_cache;
proxy_pass http://backend;
}
通过开启 Gzip 压缩,可以减少传输的数据量,提升页面加载速度。
gzip on;
gzip_comp_level 5;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
超时设置过长可能会导致资源占用增加,而设置过短可能会导致连接频繁断开。
client_body_timeout 12s;
client_header_timeout 12s;
keepalive_timeout 65s;
send_timeout 10s;
Nginx 记录大量访问日志和错误日志可能会带来磁盘 I/O 的瓶颈。在性能优化中,通常可以减少日志级别或禁用不必要的日志。
error_log /var/log/nginx/error.log crit;
access_log off;
HTTP/2 可以显著提升页面加载性能,尤其是在多资源加载的情况下。
server {
listen 443 ssl http2;
...
}
在使用 Nginx 作为反向代理时,配置合理的负载均衡策略和健康检查可以提高整体服务的稳定性和响应速度。
upstream backend {
least_conn;
server 192.168.0.1 weight=3;
server 192.168.0.2;
}
server 192.168.0.1 max_fails=3 fail_timeout=30s;
Nginx 处理大量并发请求时,可能会受到文件描述符数量的限制。
worker_rlimit_nofile 65535;
* soft nofile 65535
* hard nofile 65535
Nginx 在处理请求时需要解析域名,频繁的 DNS 查询会增加延迟。可以使用 resolver 指令指定本地缓存的 DNS 服务器,并设置缓存 TTL。
resolver 8.8.8.8 8.8.4.4 valid=300s;
Nginx 性能优化涉及多个方面,包括进程和连接数配置、缓存机制、压缩、超时设置、日志优化、HTTP/2 支持、负载均衡等。通过合理配置这些选项,可以有效提升 Nginx 的性能,特别是在高并发场景下。每个优化点应根据具体的应用场景进行调整和测试,以达到最佳效果。