我在 256MB RAM VPS 上运行 Lighttpd(估计流量较低)。
为了优化我的服务器性能,我决定更改这些设置:
"PHP_FCGI_CHILDREN" => "1",
"PHP_FCGI_MAX_REQUESTS" => "20"
我之所以设置1个子进程是因为这样设置的话会有4个php_cgi进程:
2413 11336 /usr/bin/php-cgi 2415 4592 /usr/bin/php-cgi 2417 11336 /usr/bin/php-cgi 2419 27656 /usr/bin/php-cgi
如果我设置 4,我会得到 >8 个子节点。我想知道为什么,以及这是否正常。现在我的网络服务器非常快,因为我终于不再像以前那样大量依赖交换了。
谢谢
答案1
正如你所看到的常问问题有三个配置选项可以控制 mod_php 进程的数量。
PHP_FCGI_CHILDREN
(默认为 1)max-procs
(默认为 4)min-procs
(当前版本中被忽略)
计算最初产生的进程的公式如下:
no_of_procs = max-procs * ( PHP_FCGI_CHILDREN + 1)
max-procs
这意味着,对于启动工作者中的每个进程,PHP_FCGI_CHILDREN
为每个父进程 +1 个守护进程max-procs
。
答案2
对于较新的 lighttpd 实例,你应该设置PHP_FCGI_CHILDREN为 0 并控制生成的实例数量。
这有助于减少运行的总进程数,因为不需要额外的掌握进程。但是,如果您使用字节码缓存,请仅设置 1 个生成的主进程并控制其下方的子进程。
放PHP_MAX_REQUESTS至 500 以避免再次潜在的问题。