Вчера мои веб-сайты на короткое время не работали. Я вошел на свой сервер, и моей первой реакцией был перезапуск веб-сервера apache. После этого все заработало. Итак, я начинаю проверять показатели ганглиев, чтобы увидеть, что произошло. Было ясно, что за минуту до того, как я перезапустил apache, количество запросов к веб-серверу было очень большим, превосходя ограничения Apache и блокируя другие запросы.
Я вручную проверил логи apache, фильтруя трафик за несколько минут до и после перезапуска. Не было никаких признаков того, что что-то не так. Я также анализирую журналы с помощью некоторых инструментов (awstats, скрипты ботов и т. Д.) С аналогичными результатами. Я проделываю то же самое с журналами ошибок, внимательно проверяя странное поведение. Безуспешно.
Поэтому я почти уверен, что проблема заключалась в внезапном увеличении количества запросов к веб-серверу Apache. Но я не знаю, как это произошло, была ли это атака, какая-то неприятная ошибка, проблема в приложении или что-то еще, чего я не знаю. Что вы будете делать, если на вашем веб-сервере произойдет нечто подобное? Какие еще инструменты вы используете? Какие еще логи вы проверяете? Было ли неправильно перезапускать веб-сервер в качестве первой меры для решения проблемы?
Re: в качестве первой меры перезапустите сервер ... Еще один замечательный пример "Зависит от" :-)
Если это система, которая ДОЛЖНА БЫТЬ ВВЕРХ, я не думаю, что перезагружу ее сначала.
Я бы просмотрел журналы, может быть, имел хвост -f в журнале apache, чтобы увидеть, что попадает в него в реальном времени.
Я бы также, вероятно, открыл другое окно и проверил, нет ли чего-нибудь подозрительного с помощью wirehark, просто чтобы увидеть, какой трафик попадает (и покидает) систему.
В противном случае проверьте загрузку системы, активность диска, список процессов, активность сетевой карты, чтобы убедиться, что это трафик, а не программное обеспечение. Проверьте использование памяти / свопа. Проверьте количество процессов Apache и посмотрите, исчерпаны ли они.
В большинстве случаев перезагрузка не требуется, и, хотя она устранила проблему, по-видимому, она не решает то, что вызвал проблема означает, что вы можете получить еще один звонок (возможно, в еще более неудобное время), чтобы поспешить и исправить ее снова. Ни один сервер не должен обслуживаться с периодической незапланированной перезагрузкой.
Перезагрузка может быть способом отвлечь внимание руководства или пользователей от вашей спины, когда идет тепло, но, с другой стороны, вы, возможно, потеряли шанс выяснить, что именно пошло не так. Странно, что атака внезапно прекратилась бы после перезагрузки, если только это не было сканирование портов или сканер веб-сервера, когда «исчезновение» вашего сервера могло дать ему сигнал двигаться дальше.
Если это система, которая должна быть постоянно в рабочем состоянии, вам может потребоваться какое-то решение для переключения при отказе и балансировки нагрузки. Это также поможет с устранением неполадок и предоставит вам больше гибкости в диагностике проблем без потери связи (хотя вам нужно иметь более автоматический мониторинг, чтобы сообщить вам, что система A имеет проблемы, но сайт все еще работает благодаря B, поэтому пользователи не будут скажу, что есть проблема).
У меня есть грубая, но несколько эффективная мера, которую я использую на веб-сервере Apache, демонстрирующем аналогичные симптомы. У меня есть задание cron, которое запускается каждую минуту
curl -s http://localhost/server-status > `date!`
Таким образом, если очередь сервера apache заполняется запросами (что иногда происходит по неизвестным причинам: Apache "забивается" определенными запросами) У меня есть журнал того, что произошло перед запросом. Это также полезно для устранения неполадок в моменты высокой нагрузки.