首页主机资讯怎样优化CentOS Nginx性能

怎样优化CentOS Nginx性能

时间2025-11-24 17:06:04发布访客分类主机资讯浏览1257
导读:CentOS 上优化 Nginx 性能的可落地方案 一 系统层优化 提升文件描述符限制:编辑 /etc/security/limits.conf,为运行 Nginx 的用户(如 nginx 或 root)设置 nofile 与 nproc...

CentOS 上优化 Nginx 性能的可落地方案

一 系统层优化

  • 提升文件描述符限制:编辑 /etc/security/limits.conf,为运行 Nginx 的用户(如 nginxroot)设置 nofilenproc,例如将软硬限制均设为 65535,保存后重新登录使其生效(执行 ulimit -n 验证)。这直接决定单机的并发连接上限。
  • 调整可用端口范围:在 /etc/sysctl.conf 增加 net.ipv4.ip_local_port_range = 1024 65530,执行 sysctl -p 生效,缓解高并发短连接场景的端口耗尽。
  • 提升内核网络队列与连接能力:在 /etc/sysctl.conf 增加或调优以下关键项(按需逐步放大,避免一次性过大改动):
    • net.core.somaxconn = 262144(提升 listen 队列上限)
    • net.core.netdev_max_backlog = 262144(网卡到内核的队列)
    • net.ipv4.tcp_max_tw_buckets = 6000(控制 TIME_WAIT 数量)
    • net.ipv4.tcp_tw_reuse = 1net.ipv4.tcp_tw_recycle = 1(在 NAT/负载均衡 环境下慎用 recycle)
    • net.ipv4.tcp_syncookies = 1(抵御 SYN Flood)
    • net.ipv4.tcp_max_orphans = 262144(孤儿套接字上限)
      以上内核参数能显著改善高并发下的连接排队、握手与回收效率。

二 Nginx 配置优化

  • 进程与连接
    • worker_processes auto; 或设为 CPU 核心数(如 4/8),充分利用多核。
    • worker_rlimit_nofile 65535; (与系统 nofile 限制匹配)。
    • events { use epoll; worker_connections 65535; multi_accept on; accept_mutex on; } (Linux 优先用 epollworker_processes × worker_connections 为理论并发上限)。
  • 传输与协议
    • sendfile on; tcp_nopush on; tcp_nodelay on; (零拷贝与高效传输)。
    • keepalive_timeout 60; keepalive_requests 1000; (复用连接,降低握手开销)。
  • 内容优化
    • 启用压缩:gzip on; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
    • 静态资源缓存:location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ { expires 30d; add_header Cache-Control "public"; }
  • 安全与信息泄露防护
    • server_tokens off; (隐藏版本号)。
  • 文件句柄与元数据缓存
    • open_file_cache max=102400 inactive=20s; open_file_cache_valid 30s; open_file_cache_min_uses 1; (减少 stat/open 系统调用)。
  • 代理场景常用调优(按需)
    • proxy_connect_timeout 15s; proxy_send_timeout 60s; proxy_read_timeout 60s; (避免长阻塞)。
    • 开启上游长连接:upstream { keepalive 32; } 并在 proxy_http_version 1.1; proxy_set_header Connection ""; 配合使用。
  • 日志策略
    • 高吞吐可将访问日志改为按需记录或关闭:access_log off; error_log /var/log/nginx/error.log crit; (上线前评估可观测性影响)。

三 示例配置片段

# /etc/nginx/nginx.conf 关键片段
worker_processes auto;
    
worker_rlimit_nofile 65535;


events {
    
    use epoll;
    
    worker_connections 65535;
    
    multi_accept on;
    
    accept_mutex on;

}


http {
    
    include       mime.types;
    
    default_type  application/octet-stream;
    

    sendfile        on;
    
    tcp_nopush      on;
    
    tcp_nodelay     on;
    

    keepalive_timeout 60;
    
    keepalive_requests 1000;
    

    gzip on;
    
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
    

    open_file_cache          max=102400 inactive=20s;
    
    open_file_cache_valid    30s;
    
    open_file_cache_min_uses 1;
    

    server_tokens off;


    # 静态资源缓存
    location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
    
        expires 30d;
    
        add_header Cache-Control "public";

    }


    # 示例:上游长连接(按需)
    # upstream backend {
    
    #     server 10.0.0.11:8080;
    
    #     server 10.0.0.12:8080;
    
    #     keepalive 32;

    # }

    #
    # server {

    #     location / {
    
    #         proxy_pass http://backend;
    
    #         proxy_http_version 1.1;
    
    #         proxy_set_header Connection "";
    
    #         proxy_set_header Host $host;
    
    #         proxy_set_header X-Real-IP $remote_addr;
    
    #         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    
    #         proxy_set_header X-Forwarded-Proto $scheme;

    #     }

    # }

}
    

上述片段覆盖了进程、连接、传输、压缩、缓存与上游长连接等关键优化点,可直接按需合并到现有配置中。

四 验证与上线

  • 配置检查与热加载:nginx -t & & systemctl reload nginx,确保语法正确后再生效。
  • 观测与压测:
    • 实时监控:ss -snetstat -n | awk '/^tcp/ { ++S[$NF]} END { for(a in S) print a, S[a]} 'top/vmstat/iostat 观察连接、CPU、IO 与负载。
    • 基准测试:使用 abwrkjmeterk6 进行渐进式压测,逐步提升并发,观察 P95/P99 延迟错误率,结合 error.log 与监控定位瓶颈。
  • 逐步调优:先放大文件描述符与内核队列,再调整 worker_connections 与超时,最后优化压缩/缓存与上游长连接,避免一次性大幅改动带来不稳定。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: 怎样优化CentOS Nginx性能
本文地址: https://pptw.com/jishu/754617.html
CentOS Tomcat如何监控性能 如何通过centos实现tomcat的负载均衡

游客 回复需填写必要信息