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

Вы когда-нибудь увеличивали использование памяти с помощью php-fpm?

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

Как вы можете видеть в URI изображений, одно изображение запрашивает nginx, показывая четкие провалы и пики. Другие, которые представляют собой память php-fpm и среднюю память на ребенка, похоже, совсем не следуют той же схеме. Только перезапуск php-fpm будет иметь эффект, и даже в этом случае я не могу сказать, что заметил какие-либо изменения в производительности.
Система в порядке, время отклика хорошее, и все хорошо, просто любопытно, является ли это ожидаемым поведением, и имеет ли оно либо преимущества в производительности, либо его следует избегать (путем снижения max_requests или чего-то еще?).

Система работает под управлением Debian GNU / Linux 6.0 Squeeze, AMD64. Версия PHP 5.3.6. PHP 5.3.6


pool.d / www.conf:

pm.max_children = 50
pm.start_servers = 30
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 1024


Я получил их в php-fpm.log, так как он был недавно установлен:

[28-Jun-2011 14:45:39] WARNING: [pool www] child 1893 exited on signal 9 (SIGKILL) after 22296.217811 seconds from start
[28-Jun-2011 14:45:39] NOTICE: [pool www] child 18391 started
[28-Jun-2011 14:45:39] WARNING: [pool www] child 1903 exited on signal 9 (SIGKILL) after 22296.213677 seconds from start
[28-Jun-2011 14:45:39] NOTICE: [pool www] child 18392 started
[28-Jun-2011 14:45:39] WARNING: [pool www] child 1904 exited on signal 9 (SIGKILL) after 22296.213757 seconds from start
[28-Jun-2011 14:45:39] NOTICE: [pool www] child 18393 started
[28-Jun-2011 14:45:39] WARNING: [pool www] child 1905 exited on signal 9 (SIGKILL) after 22296.214307 seconds from start
[28-Jun-2011 14:46:20] NOTICE: fpm is running, pid 18410
[28-Jun-2011 14:46:20] NOTICE: ready to handle connections
[28-Jun-2011 15:10:04] NOTICE: Terminating ...
[28-Jun-2011 15:10:04] NOTICE: exiting, bye-bye!
[28-Jun-2011 15:10:04] NOTICE: fpm is running, pid 1742
[28-Jun-2011 15:10:04] NOTICE: ready to handle connections
[28-Jun-2011 15:10:22] NOTICE: Terminating ...
[28-Jun-2011 15:10:22] NOTICE: exiting, bye-bye!
[28-Jun-2011 15:10:22] NOTICE: fpm is running, pid 2016
[28-Jun-2011 15:10:22] NOTICE: ready to handle connections
[28-Jun-2011 15:28:04] NOTICE: Terminating ...

Некоторые идеи:

  1. Уменьшите настройки fpm, затем увеличивайте по мере необходимости:

    pm.max_children = 10 # concurrent children's
    pm.start_servers = 2
    pm.min_spare_servers = 2
    pm.max_spare_servers = 4
    pm.max_requests = 300 # till restart

  2. Уменьшите настройки nginx.

  3. Установить pecl-apc(Пакет Debian php5-apc).

  4. Обновите свою версию php / nginx до последней стабильной

Какая у вас спецификация сервера?

Проверьте, сколько оперативной памяти вам нужно сэкономить (возможно, остановите php-fpm, чтобы вычислить это) и сколько памяти обычно занимает процесс php-fpm для вашего веб-приложения (см. top или ps), а затем установите pm.max_children = available RAM / php-fpm process RAM, иначе у вас закончится память.