Назад | Перейти на главную страницу

Как разрешить «сервер [информация] кажется занятым» из журналов сервера Apache?

Я видел, как этот вопрос задавали несколько раз, но на него не было настоящего ответа; поэтому я решил выложить свою резолюцию.

Нижеприведенное info сообщение можно увидеть в журнале ошибок apache:

[info] server seems busy, (you may need to increase StartServers, or Min/MaxSpareServers), spawning 16 children, there are 41 idle, and 129 total children

Решение кажется довольно очевидным; увеличить 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 на эту сумму вместо этого.