Недавно я обновил веб-сервер с Debian 8 до Debian 11, ошибок, связанных с Apache, замечено не было. До обновления сайт работал стабильно. Единственным изменением конфигурации было переключение на php7.4 с php5.
Apache настроен на использование mpm-prefork с MaxRequestWorkers, изначально установленным на 150.
После обновления максимальное количество подключений было достигнуто несколько раз. Первые несколько раз я увеличил MaxRequestWorkers до 200, затем до 256. Затем я проанализировал серверное оборудование, не настроив его, и установил ServerLimit на 400 с MaxRequestWorkers на 300. Он все еще достигает этого предела. Когда это произойдет, мне нужно перезапустить службу Apache, systemctl перезапустить apache2. Если я этого не сделаю, он будет продолжать не отвечать, пока не будет перезапущен.
Я извлек и проанализировал журналы с помощью GoAccess и не нашел доказательств DOS-атак или плохих клиентов. Такое ощущение, что обновление где-то вызвало проблему. Поиск возможных идей относительно того, почему это может быть.
Изменить: обнаружена вторая, возможно, связанная проблема, из-за которой файлы, которые были доступны для загрузки, больше не завершали загрузку. Загрузка «зависает» после загрузки определенного процента (2–40% в тестах) файла. Это оставляет процессы в состоянии неопределенности, что, скорее всего, и является причиной первоначальной отмеченной проблемы. Файлы тестируются так же хорошо, с помощью SHASUM сравниваются с оригиналами на других серверах, а текстовые файлы могут быть прочитаны непосредственно на веб-сервере через консоль.