优化Nginx在CentOS上的性能可从系统内核、Nginx配置、资源利用等方面入手,具体如下:
-
系统内核参数优化
调整TCP连接和文件描述符限制,编辑/etc/sysctl.conf:net.ipv4.tcp_max_tw_buckets=6000 # 减少TIME_WAIT连接 net.ipv4.tcp_tw_reuse=1 # 启用TIME_WAIT重用 net.core.somaxconn=65535 # 增加连接队列长度 fs.file-max=10000000 # 提升最大文件描述符数应用配置:
sysctl -p。 -
Nginx进程与连接优化
- 设置工作进程数为CPU核心数:
worker_processes auto;。 - 每个进程最大连接数建议1024-4096:
worker_connections 1024;。 - 启用
epoll事件模型(Linux专用):use epoll;。
- 设置工作进程数为CPU核心数:
-
网络与传输优化
- 启用
sendfile和tcp_nopush减少数据拷贝:http { sendfile on; tcp_nopush on; } ```。 - 调整
keepalive_timeout(建议30-60秒)减少连接开销:http { keepalive_timeout 60s; } ```。
- 启用
-
缓存与压缩优化
- 静态资源缓存(图片、CSS、JS等):
location ~* \.(jpg|css|js)$ { expires 30d; add_header Cache-Control "public"; } ```。 - 启用Gzip压缩(压缩级别6-9,数值越大CPU占用越高):
http { gzip on; gzip_comp_level 6; gzip_types text/css application/javascript; } ```。
- 静态资源缓存(图片、CSS、JS等):
-
SSL/TLS优化
仅启用TLS 1.2/1.3,优化加密套件:server { ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM'; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; } ```。 -
负载与安全优化
- 使用
limit_req和limit_conn限制异常流量:limit_req_zone $binary_remote_addr zone=req:10m rate=10r/s; location / { limit_req zone=req burst=20; } ```。 - 启用HTTP/2提升多路复用效率:
listen 443 ssl http2;。
- 使用
-
监控与调优工具
- 实时监控:
top、htop、ss -ti(查看TCP连接)。 - 日志分析:通过
access_log定位高频请求或错误。 - 压力测试:使用
ab或wrk模拟高并发请求,验证优化效果。
- 实时监控:
注意:优化需结合服务器硬件配置(如CPU、内存、SSD磁盘)和实际业务场景调整,优先在测试环境验证后再应用到生产环境。