Недавно я унаследовал настройку веб-сервера от другого разработчика. В основном это следующее:
2 веб-сервера с apache 2 2 балансировщика нагрузки с nginx 2 сервера баз данных с MySQL
Каждую неделю или около того веб-серверы apache перестают отвечать на запросы, и балансировщик нагрузки возвращает 504 тайм-аута шлюза. Я зашел на веб-сервер и проверил время безотказной работы, которое он вернул: 18:40:49 up 5 days, 20:15, 1 user, load average: 122.37, 119.80, 107.57
что чрезвычайно много по сравнению с количеством процессов, доступных для экземпляра, равным 8.
Чтобы как можно быстрее восстановить работу, я перезапустил веб-серверы, и все вернулось к норме: 18:54:19 up 5 min, 1 user, load average: 0.11, 0.22, 0.10
Я не прошу однозначных ответов, так как мне следует глубже изучить источник проблемы, но мне хотелось бы получить несколько советов и предложений по этому вопросу:
Спасибо за помощь.
Высокая нагрузка, которая устраняется перезапуском, может быть признаком какой-то утечки. Если использование памяти увеличивается либо из-за утечки памяти, либо просто потому, что платформа приложения поддерживает некоторые структуры данных, которые со временем растут, тогда сервер может в конечном итоге часто менять местами.
Это, очевидно, зависит от множества факторов, но я видел, как веб-серверы, у которых слишком мало памяти, проявляют симптомы, подобные тем, которые вы описали.
Другая возможность состоит в том, что приложение порождает фоновые потоки, которые по какой-то причине продолжают работать и тратят время процессора или другие ресурсы.
Я настоятельно рекомендую вам спросить предыдущего владельца о том, какие ресурсы могут потреблять (как память, так и процессор). Описанные вами симптомы также могут возникнуть, если сервер был взломан, но, не зная, как сервер должен себя вести, может быть очень трудно определить разницу. И даже если компромисс не является частью объяснения, вам все равно необходимо понять приложение, чтобы отладить проблему.