Где моя память?! Nginx + веб-сервер фронтэнда PHP-FPM замедляется к проверке

удостоверьтесь, что папка C:/ProgramData/MySQL/MySQL Server 5.1/Data/существует, и там действительно, как предполагается, не пространство в "ProgramData".

6
задан 28 March 2011 в 02:19
5 ответов

В следующий раз сервер замедляется, выполненный 'vmstat 1' и 'iostat 1', затем сообщите результаты нам.

1
ответ дан 3 December 2019 в 00:11

Мое предположение - то, что php5 просто был обновлен с пределом памяти по умолчанию 128 МБ и существует слишком много php5 выполнений экземпляров (проверка пополудни max_children в Вашей конфигурации php-fpm).

Вышеупомянутое произошло с mee также, и я вытягивал волосы, пытающиеся понимать это. Я зарегистрировал bugreport с человечностью, но я предполагаю, что это должны быть зафиксированные восходящие потоки с php-fpm - значения по умолчанию, которые я имел, съест выше на 6 ГБ RAM, если это могло. И это безусловно сделало мой сервер на 1 ГБ бесполезным...

2
ответ дан 3 December 2019 в 00:11

У Вас, вероятно, нет некоторого кэша кода операции установленным на сервере, который вызывает замедление.

Кроме того, как Marco сказал, Вы могли бы выполнять большое количество php-fpm экземпляров в системе.

В случае, если Вы подозреваете проблему утечки памяти, устанавливаете suhosin расширение для php, который предотвратит утечки памяти.

На самом деле, если это - утечка памяти, это должно быть зарегистрировано php журнал ошибок, php.ini имеет опцию сообщить о memleaks, report_memleaks = On

1
ответ дан 3 December 2019 в 00:11

На случай, если кто-то еще пострадает.

Мы только что столкнулись с той же проблемой. Утечка памяти в php5-fpm. ОЗУ используется с каждым запросом страницы и в конечном итоге исчерпывается. Затем ЦП переходит в режим перегрузки, и процесс KSWAP запускает диск подкачки.

единственное, что было исправлено, хотя и не идеальная установка, - это изменить наш файл пула www.conf

pm = dynamic

на

] pm = ondemand

память теперь кажется стабильной.

5
ответ дан 3 December 2019 в 00:11

Вот две вещи, которые нужно проверить:

  1. Скорее всего, у вас есть утечка памяти. pm.max_requests уничтожит / перезапустит дочерний процесс php-fpm после того, как он обработает такое количество запросов. Поскольку для замедления сканирования вашего бокса требуется около суток, попробуйте установить это число, чтобы каждый дочерний процесс возрождался каждые 20 минут или около того. Итак, если вы получаете 200 запросов в минуту и ​​у вас есть 5 процессов, установите для pm.max_requests значение 800. Если вы не хотите выполнять математические вычисления, можно установить значение от 500 до 1000. Поиграйте с ним, чтобы найти баланс между тратой времени на процессы возрождения и тратой ОЗУ на утечку памяти.

  2. Php-FPM может создавать слишком много дочерних процессов при всплеске трафика, что приводит к нехватке ОЗУ и началу обмена на диск. Решите, какой общий объем ОЗУ выделить для php-fpm, а затем разделите его на то, сколько памяти занимает каждый дочерний процесс. Для форумов на базе Wordpress и PHP я часто вижу, что каждый дочерний процесс требует 30-45 МБ. Если вы используете только один пул php-fpm, установите для pm.max_children это число.

Если у вас только один пул php-fpm, вы увидите увеличение скорости, если установите pm.type = static .

Если у вас несколько пулов php-fpm, возможно из-за того, что вы размещаете несколько приложений и хотите изолировать их по соображениям безопасности, вам нужно установить pm.type = dynamic и играть вместе с start_servers , min_spare_servers и max_spare_servers . Просто убедитесь, что совокупное количество max_children во всех пулах не больше, чем может выдержать ваш ящик.

Если у вас много приложений с низким трафиком, каждое со своим собственным пулом php-fpm , лучше установить pm.type = ondemand , чтобы каждое приложение занимало ресурсы только тогда, когда оно действительно используется. Также установите pm.max_children достаточно низким, чтобы ни одно приложение не могло полностью заполнить поле.

3
ответ дан 3 December 2019 в 00:11

Теги

Похожие вопросы