我有 31GB RAM 8 核 Web 服务器,当前负载为每分钟 3k。
目前,nginx 配置中的 worker_processes 参数为 4,根据我的理解,这意味着只会使用 4 个核心。但是当我查看 CPU 性能时,我发现所有 8 个核心的负载相同。为什么?
此外,将此值设为 8 对我的情况有帮助吗?
答案1
一些其他程序使用 CPU,比如 php?粘贴所有顶部输出,不仅是 CPU,还有程序。也打开线程可见性...(如果我没记错的话,是 H 键。)
答案2
从文档:
最佳值取决于许多因素,包括(但不限于)CPU 核心数、硬盘数量存储数据和加载模式。如果有疑问,将其设置为可用 CPU 核心数将是一个不错的开始(值“auto”将尝试自动检测它)。
因此,基本上,将其设置为 CPU 数量是一个好主意。但是,如果您有磁盘延迟问题,请降低该值。
答案3
的值worker_processes
是不是相当于使用的 CPU 核心数。顾名思义,它仅控制单个 nginx 进程实例将会运行。这些实例中的任何一个都会生成多个线程来处理传入的请求,即使您选择仅使用单个工作进程,这些线程也会在所有可用核心上运行。
至于为什么每个 CPU 一个工作进程比例如只有一个工作进程更好——我不知道。了解 nginx 如何使用线程的内部工作原理的人应该能解释这一点。
附言:我想知道为什么你们的服务器负载这么高 - 我们正在运行一个小型的 2 核服务器,它每秒最多可处理 200 个请求,而几乎没有任何负载。