我见过几次有人问过这个问题,但一直没有得到真正的答案;所以我决定发布我的解决方案。
info
在 apache error.log 中可以看到以下消息:
[info] server seems busy, (you may need to increase StartServers, or Min/MaxSpareServers), spawning 16 children, there are 41 idle, and 129 total children
答案1
解决方法似乎很明显;增加StartServers
直到它消失。虽然确实如此,但随意增加该值是一种不好的做法,除非您了解其含义并且增加的值确实有帮助。
我正在阅读 httpd 源代码,它说明以下内容:
/*
* idle_spawn_rate is the number of children that will be spawned on the
* next maintenance cycle if there aren't enough idle servers. It is
* doubled up to MAX_SPAWN_RATE, and reset only when a cycle goes by
* without the need to spawn.
*/
进一步在源代码中,实际错误记录在以下情况下:
if (retained->idle_spawn_rate >= 8) {
ap_log_error(APLOG_MARK, APLOG_INFO, 0, ap_server_conf, APLOGNO(00162)
"server seems busy, (you may need "
"to increase StartServers, or Min/MaxSpareServers), "
"spawning %d children, there are %d idle, and "
"%d total children", retained->idle_spawn_rate,
idle_count, total_non_dead);
}
所以这意味着; 这个错误被抛出由于没有足够的服务器来处理请求,所以下一个周期要生成的子进程数大于 8。
那么如何解决此问题?
每次出现此错误时,您都会看到类似 的内容spawning 16 children
;这意味着由于缺少服务器来处理请求,因此必须生成 16 个子进程。基本上,将您的进程数增加StartServers
生成子进程数,直到错误消失。您也可以将 增加这个Min/MaxSpareServers
数量。