首页 > 运维 > Nginx > 正文

worker_processes 与 worker_connections 参数调优

煙雲
发布: 2025-07-09 08:59:01
原创
562人浏览过

nginx 的并发处理能力可通过调优 worker_processes 和 worker_connections 来优化。1. worker_processes 应设为 cpu 核心数,或使用 auto 自动识别,避免超过核心数导致进程切换开销;2. worker_connections 需结合内存、带宽及应用特性设置,并确保不超过系统文件描述符限制;3. 最大连接数=worker_processes×worker_connections,但并非越大越好,需通过压力测试和性能监控逐步调整;4. 可使用 netstat、ss 或 ngx_http_stub_status_module 查看当前连接数;5. keep-alive 连接可提升性能,但需合理配置超时时间与请求数;6. 出现“too many open files”错误时,应修改系统文件描述符限制并优化 nginx 配置以减少资源占用。

worker_processes 与 worker_connections 参数调优

实际上,worker_processesworker_connections 的调优直接影响着 Nginx 的并发处理能力,说白了就是能抗住多大的访问量。这俩参数配置不当,轻则服务器响应变慢,重则直接宕机,所以必须重视。

解决方案

优化这两个参数,目标是充分利用服务器资源,同时避免资源耗尽。

  1. worker_processes 的设置

    worker_processes 指的是 Nginx 启动的工作进程数。通常,建议将其设置为 CPU 的核心数。这样做可以最大限度地利用多核 CPU 的并行处理能力。

    • 如何确定 CPU 核心数?

      在 Linux 系统中,可以通过 cat /proc/cpuinfo 命令查看 CPU 信息,或者使用 nproc 命令直接获取核心数。

    • 配置示例:

      worker_processes  auto; # 或者直接指定核心数,例如: worker_processes 4;
      登录后复制

      auto 选项让 Nginx 自动检测 CPU 核心数,这通常是最方便的选择。

    • 注意事项:

      • 不要设置过多的 worker_processes,超过 CPU 核心数反而会增加进程切换的开销,降低效率。
      • 如果你的服务器同时运行着其他 CPU 密集型应用,可以适当减少 worker_processes 的数量,避免资源竞争。
  2. worker_connections 的设置

    worker_connections 指的是每个 worker 进程可以处理的最大并发连接数。这个参数的设置需要综合考虑服务器的内存、网络带宽以及应用的特性。

    • 计算公式:

      理论上,服务器可以处理的最大并发连接数 = worker_processes * worker_connections

    • 配置示例:

      events {
          worker_connections  1024; # 或者设置更大的值,例如: worker_connections 2048;
      }
      登录后复制
    • 注意事项:

      • worker_connections 的值受到操作系统和硬件的限制。Linux 系统默认的文件描述符数量有限制,可以通过 ulimit -n 命令查看。如果需要设置更大的 worker_connections,需要修改操作系统的文件描述符限制。
      • 并非 worker_connections 设置得越大越好。过大的值会占用更多的内存,并可能导致系统不稳定。需要根据实际情况进行调整。
      • 如果你的应用需要处理大量的 Keep-Alive 连接,可以适当增加 worker_connections 的值。
  3. 优化建议

    • 监控服务器性能:

      在调整 worker_processesworker_connections 的值之后,需要密切监控服务器的 CPU 使用率、内存使用率、网络带宽以及 Nginx 的错误日志。可以使用 topvmstatiostat工具进行监控。

    • 压力测试:

      怪兽AI数字人
      怪兽AI数字人

      数字人短视频创作,数字人直播,实时驱动数字人

      怪兽AI数字人44
      查看详情 怪兽AI数字人

      使用 abwrk 等工具对 Nginx 进行压力测试,模拟高并发访问,观察服务器的性能表现。根据测试结果,逐步调整 worker_processesworker_connections 的值,找到最佳配置。

    • 考虑应用特性:

      不同的应用对并发连接的需求不同。例如,静态资源服务器通常可以处理更多的并发连接,而需要进行大量计算的动态应用则需要更少的并发连接。

如何查看 Nginx 的当前连接数?

可以使用 netstat -an | grep :80 | wc -l 命令查看当前连接到 80 端口的连接数(假设 Nginx 监听的是 80 端口)。 也可以使用 ss -ant | grep :80 | wc -lss 命令通常比 netstat 更快。 还可以使用 Nginx 的 ngx_http_stub_status_module 模块,它提供了一个简单的状态页面,可以查看当前的连接数、请求数等信息。

server {
    listen 80;
    server_name status.example.com; # 修改为你的域名

    location /nginx_status {
        stub_status on;
        access_log off;
        allow 127.0.0.1; # 只允许本地访问
        deny all;
    }
}
登录后复制

配置完成后,访问 http://status.example.com/nginx_status 即可查看状态信息。

Active connections 表示当前的活跃连接数。

Nginx 如何处理 Keep-Alive 连接?

Nginx 使用 Keep-Alive 连接来复用 TCP 连接,减少连接建立和关闭的开销,提高性能。 Keep-Alive 的相关配置参数主要有:

  • keepalive_timeout:指定 Keep-Alive 连接的超时时间。如果在这个时间内没有新的请求,连接会被关闭。
  • keepalive_requests:指定一个 Keep-Alive 连接上可以处理的最大请求数。
  • tcp_nodelay:启用 TCP_NODELAY 选项,禁用 Nagle 算法,减少小数据包的延迟。
  • tcp_nopush:启用 TCP_NOPUSH 选项,尽量将多个小数据包合并成一个大的数据包发送,提高网络利用率。
http {
    keepalive_timeout  65;
    keepalive_requests 100;
    tcp_nodelay on;
    tcp_nopush on;
}
登录后复制

需要注意的是,Keep-Alive 连接也占用服务器资源。如果 Keep-Alive 连接过多,可能会导致资源耗尽。因此,需要根据实际情况进行调整。

如果 Nginx 出现 "too many open files" 错误怎么办?

这个错误表示 Nginx 达到了操作系统的文件描述符限制。解决方法是:

  1. 修改操作系统的文件描述符限制:

    • 临时修改:使用 ulimit -n 65535 命令修改当前会话的文件描述符限制。

    • 永久修改:修改 /etc/security/limits.conf 文件,添加以下内容:

      * soft nofile 65535
      * hard nofile 65535
      root soft nofile 65535
      root hard nofile 65535
      登录后复制

      然后重启服务器。

  2. 优化 Nginx 配置:

    • 检查 Nginx 的配置文件,确保没有不必要的文件操作。
    • 减少 worker_connections 的值。
    • 使用连接池,减少连接建立和关闭的开销。
  3. 检查其他应用:

    • 检查服务器上运行的其他应用,确保它们没有占用过多的文件描述符。

解决 "too many open files" 错误的关键是找到文件描述符的瓶颈,并采取相应的措施。 修改文件描述符限制只是治标不治本的方法,更重要的是优化应用和 Nginx 的配置,减少文件描述符的使用。

以上就是worker_processes 与 worker_connections 参数调优的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号