编辑/etc/sysctl.conf,添加以下配置以优化网络连接处理能力:
net.core.somaxconn = 65535 # 监听队列最大长度(避免连接被拒绝)
net.ipv4.tcp_max_syn_backlog = 65535 # SYN队列长度(应对高并发连接请求)
net.ipv4.tcp_tw_reuse = 1 # 复用TIME-WAIT状态的连接(减少资源占用)
net.ipv4.tcp_fin_timeout = 30 # TIME-WAIT状态超时时间(快速释放连接)
net.ipv4.tcp_max_tw_buckets = 180000 # TIME-WAIT连接数上限(防止内存耗尽)
net.ipv4.tcp_slow_start_after_idle = 0 # 禁用慢启动(提升TCP传输效率)
应用配置:sysctl -p。
编辑/etc/security/limits.conf,为Nginx用户(通常为nginx或www-data)设置足够高的文件描述符限制:
* soft nofile 65535 # 软限制(临时生效)
* hard nofile 65535 # 硬限制(永久生效)
重启系统或重新登录使配置生效。
auto让Nginx自动检测),充分利用多核CPU资源:worker_processes auto;
events {
worker_connections 10240; # 最大连接数 = worker_processes × worker_connections
}
epoll事件模型(高性能异步I/O模型):events {
use epoll;
}
events {
multi_accept on;
}
sendfile开启零拷贝传输(减少数据在内核空间与用户空间的拷贝),tcp_nopush配合sendfile使用,避免网络阻塞:http {
sendfile on;
tcp_nopush on;
}
http {
tcp_nodelay on;
}
gzip_comp_level设置为4-6,平衡压缩率与CPU消耗):http {
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml;
gzip_comp_level 6;
gzip_min_length 1k; # 只压缩大于1KB的内容
}
对静态资源(图片、CSS、JS等)设置过期时间,减少客户端重复请求:
location ~* \.(jpg|jpeg|png|gif|ico|css|js|pdf)$ {
expires 30d; # 缓存30天
add_header Cache-Control "public, no-transform"; # 允许公共缓存
}
http {
proxy_cache_path /tmp/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off;
server {
location /api/ {
proxy_cache my_cache;
proxy_pass http://backend;
proxy_cache_valid 200 302 10m; # 200/302状态码缓存10分钟
proxy_cache_valid 404 1m; # 404状态码缓存1分钟
}
}
}
upstream模块将请求分发到多台后端服务器,提升整体处理能力(支持轮询、IP哈希、最少连接等策略):upstream backend {
least_conn; # 最少连接策略(推荐高并发场景)
server 192.168.1.101:8080;
server 192.168.1.102:8080;
server 192.168.1.103:8080;
}
server {
location / {
proxy_pass http://backend;
proxy_http_version 1.1; # 使用HTTP/1.1(支持keepalive)
proxy_set_header Connection ""; # 清除Connection头(避免keepalive失效)
}
}
server {
listen 443 ssl http2; # 必须启用HTTP/2
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
}
server {
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256';
ssl_prefer_server_ciphers on;
}
top(查看CPU/内存使用率)、ss -s(查看TCP连接数)、nginx -t(检查配置语法)、ab/wrk(压力测试)等工具定期监控服务器状态。access_log分析高频请求、慢请求(需开启log_format的$request_time字段),定位性能瓶颈点。以上优化措施需根据实际业务场景(如高并发静态网站、动态API服务等)调整参数,建议每次修改配置后通过压力测试(如ab -n 10000 -c 1000 http://yourdomain.com/)验证效果。