Назад | Перейти на главную страницу

Имея проблемы с хостом, может ли кто-нибудь порекомендовать решение или другой вариант хоста?

У меня есть веб-приложение PHP / MySQL, которое получает около 600 000 обращений в месяц. Последние несколько месяцев он работает хорошо, но в последнее время сервер OOM дает сбой. Промежутки между сбоями памяти были реже, но теперь он вылетал дважды за последние два дня. Когда он работает, он работает очень быстро, я просто не могу, чтобы сайт так часто зависал.

Есть ли у кого-нибудь идеи о том, как решить мою проблему, или какие-либо рекомендации по другому веб-хосту, которые могут решить эту проблему.

Настройка моего сервера: неуправляемый VPS (512 МБ выделенной памяти). На нем работают CentOS, Apache2 и PHP 5.2. Я запускаю только веб-приложения с использованием PHP и MySQL. Мое популярное приложение использует cakePHP. Я размещаю здесь другие сайты, но на них не так много просмотров. Мне нужно автоматическое резервное копирование.

Кажется, что вы получаете непредсказуемые всплески, а директива Apache MaxClients больше, чем может справиться ваш сервер.

Если вы используете mpm_prefork, каждый запрос будет обрабатываться отдельным дочерним элементом apache, и каждый дочерний элемент потребляет память.

Из документации apache: «Этот MPM очень саморегулируется, поэтому редко требуется изменять его директивы конфигурации. Наиболее важно то, что MaxClients должны быть достаточно большими, чтобы обрабатывать столько одновременных запросов, сколько вы ожидаете получить, но достаточно маленькими, чтобы гарантировать, что физической ОЗУ достаточно для всех процессов."(http://httpd.apache.org/docs/2.0/mod/prefork.html)

Проверьте размер памяти, потребляемой каждым процессом apache, и попробуйте настроить директивы MaxClients, MinSpareThreads и MaxSpareThreads в соответствии с доступной памятью.

Кроме того, вы можете установить директиву MaxRequestsPerChild ниже, чтобы избежать ошибок OOM в случае, если ваше приложение вызывает утечку памяти. Не устанавливайте его слишком низко. Если вы это сделаете, вы столкнетесь с узким местом процессора, поскольку дети будут часто убиваться и создаваться.

Более того, большой KeepAliveTimeout может занять ваших детей apache излишне занятыми запросом, который уже был выполнен. Я обязательно проверю это в вашей конфигурации apache. Для получения дополнительной информации о директивах apache keep alive прочтите http://httpd.apache.org/docs/2.0/mod/core.html.

Наконец, подумайте о покупке большего количества оперативной памяти.

Подводя итог, я считаю, что вам нужна настройка / настройка Apache. А пока забудьте о том, чтобы обвинять компанию веб-хостинга ...