我有个问题。我拥有一个 128mb vps 的简单博客,每天只有 100 次点击。我安装了 nginx + php5-fpm。考虑到低访问量和内存,我决定将 fpm 设置为静态并运行 1 个服务器。当我进行随机测试(例如通过 http 运行 php 脚本持续 30 多分钟)时,我尝试在同一台机器上打开博客,发现该站点基本上无法访问。所以我去配置并阅读:
The number of child processes to be created when pm is set to 'static' and the
; maximum number of child processes to be created when pm is set to 'dynamic'.
; **This value sets the limit on the number of simultaneous requests that will be
; served**
最让我震惊的是我不知道,因为我一直认为一个 php 子进程会像 http 服务器一样同时处理数百个请求!做对了吗?例如,如果我同时启动 2 个 php-fpm 子进程并启动 2 个“长脚本”,那么所有使用相同 php 后端的站点都将无法访问??这个怎么用?你可能会想:-duh!一个 php 脚本(网页)通常在 100 毫秒内处理-...毫无疑问,但是如果您的页面每个可以运行大约 10 秒,并且我有 10 个使用 php-fpm 的访问者和 5 个服务器所以只接受每次5个请求同时?他们都将排队或将经历超时?
老实说,我习惯于在 Windows 中使用 Apache 和 mod_php 运行站点,我从未遇到过这些问题,因为显然这些限制不适用于使用 PHP 的不同方式。
这也提出了另一个问题。如果我有带有 sleep(20) 的 file_1.php 和带有 echo 的 file_2.php,如果我使用 fastcgi 机器运行 file_1 然后 file_2 第二个文件将请求创建另一个服务器来处理使用 4MB RAM 更多的 php 请求. 如果我对 apache/mod_php 做同样的事情,第二个文件将只使用 30KB 以上的 RAM(在 apache 服务器中)。考虑到这一点,如果使用的 ram 实际上更少,为什么 mod_php 会考虑“坏人”……我知道我在这里错过了大局。