У меня есть VPS-сервер, который запускает для меня несколько веб-сайтов, а также несколько скриптов, и похоже, что у него заканчивается память. Общий объем памяти составляет 1 ГБ. Похоже, php-fpm исчерпывает память. Раньше он просто убивал другие процессы (например, mysql) для освобождения памяти.
Ошибка была:
php fpm has invoked oom-killer
Я решил, что с помощью этого решения: php-fpm вызывает oom-killer
Затем я попытался настроить различные настройки php-fpm безуспешно. Я также увеличил размер файла подкачки с 1 ГБ до 2 ГБ (в 2 раза больше моей физической памяти). У меня всего 10 небольших веб-сайтов, которые не получают большого трафика, поэтому я не понимаю, почему у меня заканчивается память. Что еще я могу сделать, помимо покупки дополнительной памяти для своего компьютера?
На данный момент php-fpm, похоже, забирает весь 1 ГБ памяти и большую часть подкачки, в некоторых случаях это мешает мне получить доступ к VPS так как я не могу пройти аутентификацию!
Запуск a:
service php-fpm restart
Мгновенно освобождает почти всю память на приставке (т. е. 950/990 при использовании заменяется на 200/990 при использовании). Итак, какие у меня варианты? При необходимости я также могу опубликовать соответствующие файлы конфигурации.
Соответствующие спецификации: ОС: Centos 6.7 x86_64 Оперативная память: 1 ГБ Своп: 2 ГБ php -версия: PHP 5.5.35 (cli) (построено: 29 апреля 2016 г., 09:07:44) php-fpm -version: PHP 5.5.35 (fpm-fcgi) (построено: 29 апреля 2016 г., 09:09:09)
(это должен быть комментарий, но он немного длинный).
"Я решил, что используя это решение" - к сожалению, большинство мнений там неверны.
php fpm вызвал oom-killer
Это значит, что:
1) ваша система настроена на перекомментирование памяти. Чрезмерный коммит памяти полезен, когда вам приходится управлять плохо написанными, длительными процессами, написанными на объектно-ориентированных языках (например, Java), а также для vm-хостов, на которых запущено большое количество неактивных гостей. Ни то, ни другое, похоже, здесь не применимо. Установка overcommit_memory в 2, как предлагается, отключит overcommit - так что WTF предлагает Крис установить коэффициент overcommit_ratio в 80% (по умолчанию обычно около 50%), когда он отключен???
2) PHP-FPM попросил больше памяти, и не осталось ни одного. Это не обязательно означает, что PHP-FPM израсходовал всю память.
Ваша проблема в том, что используемая конфигурация не помещается в используемый вами бокс. Но описание того, как настроить Linux, PHP, MySQL и веб-сервер здесь несколько не к месту.
То, что перезапуск процесса FPM, похоже, решает проблему , говорит о том , что проблема в PHP-FPM, но это не дымящийся пистолет. Возможно, каждый PHP-процесс имеет открытое соединение с базой данных.
Так как вы не опубликовали конфигурацию php-fpm, не предоставили никаких подробностей о вашем веб-сервере, а также не дали никаких данных о времени ответа, на этот вопрос нельзя ответить здесь.
Не тратьте много времени и сил, изучая, как ведут себя ваши системы и как их настраивать, или покупайте больше памяти.
.