Como resolver '[info] server parece ocupado' nos logs do servidor Apache?

Como resolver '[info] server parece ocupado' nos logs do servidor Apache?

Já vi essa pergunta algumas vezes, mas ela não teve nenhuma resposta real; então decidi postar minha resolução.

A mensagem abaixo infopode ser vista no 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

Responder1

A resolução parece bastante óbvia; aumente StartServersaté que desapareça. Embora seja verdade, é uma má prática aumentar arbitrariamente o valor, a menos que você entenda as implicações e se o valor aumentado realmente vai ajudar.

Eu estava lendo o código-fonte do httpd e diz o seguinte:

/*
 * 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.
 */

Mais adiante na fonte, o erro real é registrado quando:

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);
            }

Então, o que isso significa é; esse erro é lançadoquando o número de filhos a serem gerados no próximo ciclo for maior que 8 porque não há servidores suficientes para lidar com solicitações.

Então, como você pode consertar isso?

Cada vez que esse erro for gerado, você verá algo como spawning 16 children; isso significa que 16 filhos tiveram que ser gerados porque faltavam servidores para lidar com as solicitações. Basicamente, aumente StartServersa quantidade de filhos gerados até que o erro desapareça. Você também pode aumentar Min/MaxSpareServersesse valor.

informação relacionada