优化Ubuntu系统内核参数
调整内核参数以提升网络和文件处理能力,是Nginx高性能的基础保障。需修改/etc/sysctl.conf文件,添加或修改以下关键参数:
net.core.somaxconn = 65535:增加系统允许的最大挂起连接数,避免高并发时连接被拒绝;net.ipv4.ip_local_port_range = 1024 65535:扩大临时端口范围,支持更多并发外出连接;net.ipv4.tcp_tw_reuse = 1:启用TIME-WAIT连接复用,减少端口耗尽风险;fs.file-max = 2097152:提升系统最大文件描述符数(需配合Nginx的worker_rlimit_nofile设置)。修改后执行sudo sysctl -p使配置生效。调整Nginx进程与连接模型
合理配置进程和连接参数,最大化利用服务器资源:
worker_processes auto;:自动匹配CPU核心数(如4核服务器生成4个工作进程),避免进程过多导致上下文切换开销;worker_cpu_affinity auto;:将每个工作进程绑定到独立CPU核心,减少缓存失效,提升处理效率;events块配置:worker_connections 4096;(每个工作进程最大并发连接数,可根据服务器内存调整,如16GB内存可设为8192)、multi_accept on;(允许单个工作进程一次性接收多个新连接,提升高并发下的连接处理速度)、use epoll;(采用Linux高效事件驱动模型,适合高并发场景)。启用高效传输与压缩功能
通过传输优化和压缩减少数据传输量,提升页面加载速度:
sendfile on;启用sendfile系统调用,绕过用户空间直接在内核空间传输文件,降低CPU占用;tcp_nopush on;(配合sendfile使用,在发送完整数据包后再发送,减少小包数量)、tcp_nodelay on;(禁用Nagle算法,实时发送小数据包,降低延迟);gzip on;启用压缩,gzip_min_length 256;(仅压缩大于256字节的响应,避免小文件压缩反而增加开销)、gzip_comp_level 5;(平衡压缩率与CPU消耗,推荐5-6)、gzip_types text/plain text/css application/json application/javascript;(指定压缩的MIME类型,覆盖静态资源与动态内容)。配置多层级缓存策略
缓存静态资源与动态内容,减少后端请求和重复计算:
server块中添加location指令:location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ { expires 365d; add_header Cache-Control "public, max-age=31536000, no-transform"; },设置长期浏览器缓存(365天),并通过no-transform防止CDN或代理修改内容;open_file_cache max=1000 inactive=20s;(缓存1000个常用文件句柄,20秒未访问则失效)、open_file_cache_valid 30s;(每30秒验证缓存有效性)、open_file_cache_min_uses 2;(文件被访问2次后才加入缓存),加速频繁访问的静态文件;proxy_cache_path定义缓存路径:proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off;(缓存目录为/var/cache/nginx,1:2目录层级,缓存区名为my_cache,大小10MB,最大存储1GB,60分钟未访问则失效),并在location中启用缓存:location / { proxy_cache my_cache; proxy_pass http://backend; proxy_cache_valid 200 302 10m; proxy_cache_valid 404 1m; proxy_cache_use_stale error timeout updating; }(200/302状态码缓存10分钟,404缓存1分钟,支持在错误或更新时使用陈旧缓存)。优化SSL/TLS与HTTP/2设置
若使用HTTPS,需优化加密配置以减少延迟:
listen指令中添加http2,如listen 443 ssl http2;,利用HTTP/2的多路复用、头部压缩特性提升并发性能;ssl_protocols TLSv1.2 TLSv1.3;(禁用不安全的SSLv3、TLSv1.0/1.1,仅保留TLS1.2及以上)、ssl_ciphers HIGH:!aNULL:!MD5;(使用高强度加密套件,排除弱算法)、ssl_prefer_server_ciphers on;(优先使用服务器端加密套件);ssl_session_cache shared:SSL:10m;(共享会话缓存,减少TLS握手次数)、ssl_session_timeout 10m;(会话有效期10分钟),降低后续连接的加密开销。监控与持续优化
建立监控体系,及时发现性能瓶颈:
access_log /var/log/nginx/access.log combined buffer=32k flush=300s;(缓冲32KB后每5分钟刷新一次,减少磁盘I/O);htop(查看CPU/内存使用率)、ss -s(查看TCP连接状态)、nginx -t(测试配置语法)、sudo systemctl reload nginx(重载配置,无需重启服务);ngxtop实时分析访问日志。