У меня есть debian VPS с 2 ГБ RAM что действительно хорошо для больших вещей. Однако в последнее время мой веб-сайт часто падает, и я до сих пор не могу указать точную причину.
Сначала у меня было 512 МБ ОЗУ, что было слишком мало для работы с моим сайтом. Как я видел в логах, сайт использовал не менее 450 МБ. Я обновил его до 2 ГБ, надеясь, что это все решит, но ничего не сделал.
Тогда я подумал, что, возможно, код моего веб-сайта выполняет огромный процесс, потому что это действительно так. Поэтому я перестроил простую систему, чтобы сократить объем выполнявшегося огромного процесса. Тем не менее, проблема сохранялась.
Теперь я думаю, это может быть проблема с количеством посетителей. Но нет даже 30 активных посетителей, даже меньше, и 2 ГБ ОЗУ должно хватить на их всех. Посмотрев на использование ОЗУ, когда сайт выходит из строя, это около 400-500 МБ из 2 ГБ, поэтому я подтвердил, что это не проблема ОЗУ.
Так что я действительно запутался. Что еще это может быть?
Журналы ошибок Apache - это все мои уведомления о файлах PHP и неважные вещи, которые не имеют ничего общего с отключением Apache, но Я уверен, что это единственная проблема Apache, потому что SSH подключается и отлично работает, пока веб-сайт не работает.
Какие ожидаются проблемы или что еще нужно проверить? Может быть, это ограничения Apache для использования посетителями?
Хотя у меня мало информации о том, что происходит в отношении установления связи TCP или других сетевых проблем, похоже (автор твой комментарий) что в apache.conf
что у вас есть более 10 пользователей, которые пытаются обрабатывать одновременно, и ваш MaxClients
директива слишком мала для обработки вашего трафика. Я бы увеличил число. Поскольку я не знаю, какой трафик получает ваш сервер, я бы установил значение не менее 50 и увеличил бы его, если при нагрузочном тестировании возникнут проблемы. Вы можете запустить нагрузочный тест с помощью бесплатного сервиса, такого как Воздействие нагрузки. [Нет принадлежности]
Из http://httpd.apache.org/docs/2.2/mod/mpm_common.html#maxclients:
Директива MaxClients устанавливает ограничение на количество одновременных запросов, которые будут обслуживаться. Любые попытки подключения сверх лимита MaxClients будут обычно в очереди[emplasis mine], вплоть до числа, основанного на директиве ListenBacklog. Как только дочерний процесс будет освобожден в конце другого запроса, соединение будет обслуживаться.
Ваши соединения кажутся «зависшими», поскольку они ставятся в очередь на обработку, хотя я не сомневаюсь, что ваш сервер может обрабатывать немного одновременно.