Да, это обычная проблема. Это также точка, где заканчивается знание / системное знание большинства людей: -)
Это длинная тема. Во-первых, можете ли вы воспроизвести поведение или часто его видеть? Или это просто «иногда», и вы замечаете это только тогда, когда уже слишком поздно что-то отлаживать?
Дело в том, что отладка сбоя также возможна посмертно, анализируя журналы, но они должны быть подготовлены к событию раньше, но, поскольку вы не знаете, что искать, это может быть дополнительной работой.
Чтобы выяснить, где может быть узкое место ресурса, хорошим первым шагом может быть включение mod_status, сделать его доступным из localhost или некоторого надежного расположения и посмотреть на состояние сервера (/ server-status). Может быть невозможно посмотреть на состояние сервера, когда «слишком поздно» и Apache больше не реагирует, но возможно собрать интересные данные раньше.
Поскольку вы пометили свой вопрос "mysql", другой вопрос будет, если есть бэкэнд-база данных, которую Apache должен ждать. Небольшая настройка MySQL может решить все ваши проблемы, но это только одна из возможностей сбоя, который вы видите. Регистрация состояния сервера, небольшая часть «верхнего» вывода и mysqls slow-query-log позволят понять это. Кроме того, проверьте конфигурацию памяти mysql, если у вас есть подозрения, что об этом, возможно, уже не позаботились.
Наконец, важно убедиться, что Apache не будет использовать слишком много памяти, когда он ставит в очередь запросы, или машина начнет подкачку и, наконец, уничтожит Apache (или что-то еще). Оцените, сколько памяти требуется каждому процессору Apache. Это не легко увидеть в статусе процесса, но его можно рассчитать с помощью этого сценария: http://cmdline.net/misc/httpd2-memusage. Затем посмотрите, сколько памяти ваша система может максимально потратить на процессы Apache, и соответственно установите MaxClients, чтобы Apache никогда не использовал больше, чем доступно. (Вы умножаете потребность в ОЗУ среднего процесса на количество процессов, простую математику.) Возможно, потребуется скорректировать и некоторые другие директивы определения размера, чтобы они соответствовали MaxClients. Это то, чего не хватает многим установкам, но это необходимая защита от небольших «взрывов».
Наконец, ваш Apache относительно занят? Тогда я могу почти вслепую порекомендовать уменьшить KeepaliveTimeout до 2 секунд.