Windows 上的 Nginx+PHP 可扩展性

Windows 上的 Nginx+PHP 可扩展性

我正在尝试了解在 Windows 上运行的 Nginx+PHP 可扩展性,比如说,100 个请求执行中期操作。

分析我看到的源代码:

  1. Nginx 根据配置和/或服务器处理器数量多次启动。

  2. 虽然它使用 I/O 完成端口,但每个工作器只创建一个线程来处理请求。

  3. 当 PHP 请求完成后,Nginx 使用 FastCGI 与 PHP 通信

此时,尽管 NGinx 可以继续扩展,但我无法在标准 PHP fastcgi sapi 代码中看到使用多个线程/进程和完成端口进行扩展。

对于 unix/linux,PHP-FPM 可以解决问题,因为它可以分叉子进程来完成任务,但不确定性能。

但是回到 W​​indows,仍然在 PHP-FPM 中,我没有看到用于维持整个 Web 服务器高性能的特定代码。

Windows 有替代方案吗?我的研究有误吗?

答案1

nginx 在 Windows 上的可扩展性有限,因此不推荐将其用作生产网站的平台。

来自 nginx 网站

Windows 版 nginx 使用原生 Win32 API(而非 Cygwin 仿真层)。select()目前仅使用连接处理方法,因此不应期望高性能和可扩展性。

尽管可以启动多个工作进程,但实际上只有其中一个执行任何工作。

一个工作者最多可以处理 1024 个同时连接。

相关内容