nginx:最佳工作线程数

nginx:最佳工作线程数

我刚刚购买了一台新服务器,它将运行 nginx、PHP、MySQL 堆栈,90% 的时间为完全缓存的 html 请求提供服务,否则通过 FastCGI 提供 PHP/mysql 请求。

盒子上的统计数据如下:

CentOS 5.x 64 位

2 个 Intel 四核 Xeon E5520(8 核/16 线程)

6GB DDR3 @ 800Mhz

想知道一些 nginx 专家通常会为这样的服务器推荐多少个工作进程。我正在寻找最佳设置,因为这严格来说是一个 Web 服务器 - 理想情况下,每秒处理几千个来自 html 缓存的请求,最多处理几百个来自 PHP/mysql 的请求。

谢谢!

答案1

Nginx 的常驻内存使用量很小,据我所知,拥有 8 个 Nginx 进程(每个核心 1 个)比拥有 1 个进程的惩罚很小。

我会运行 apache bench 或其他具有高并发性的实用程序,请求磁盘重度对象。继续增加 AB 测试,直到发现临界点。然后在保持所有其他测试相同的情况下,试验 Nginx 进程的数量。报告回来,这样我们就可以更明智了。

答案2

如果您正在执行代理工作负载(PHP 算作代理工作负载),那么我建议只使用一名工作者,因为没有理由使用多名工作者。

我建议使用多个工作进程的唯一原因是当您使用 nginx 进行繁重的静态文件 IO 时。尽管 nginx 使用异步 IO 模型,但仍有一些系统调用可能会阻碍工作进程,从磁盘读取就是其中之一。在这些情况下,我建议每个磁盘主轴或 CPU(以较小者为准)使用一个工作进程。

答案3

相关内容