nginx + php5-fpm - падает производительность.

12
[Удален]
3558

Собственно ситуация, стоит связка nginx + php5-fpm, апачей нету.

Есть клиент - под него сделан отдельный пул php5-fpm со следующими настройками:


[user827]
pm = dynamic
pm.start_servers = 1
pm.min_spare_servers = 1
pm.max_children = 6
pm.max_spare_servers = 6
pm.max_requests = 1000
listen = /var/www/php-fpm/user827.sock
listen.mode = 0660
listen.owner = user827
listen.group = www-data
user = user827
group = user827
chdir = /
php_admin_value[upload_tmp_dir] = /var/www/user827/data/mod-tmp
php_admin_value[session.save_path] = /var/www/user827/data/mod-tmp
php_value[mbstring.func_overload] = 2
php_value[mbstring.internal_encoding] = utf-8
php_admin_value[error_log] = /var/www/user827/data/logs/php-error.log

Далее, у клиента около 30 сайтов, но все они смотрят на один пул php5-fpm.

Спустя какое то время на некоторых сайтах в 5-6 раз падает скорость выполнения php скриптов.

При этом если скорость упала на сайте A, он так и будет работать медленно. Но на сайте B скорость будет нормальной. Закономерности я не нашел. Рестарт nginx не помогает, помогает рестарт php-fpm. После рестарта php-fpm на всех сайтах скорость нормальная, но спустя пол дня - пара дней опять находятся сайты на которых низкая производительность.

Версия php:

root@b1:/var/log# php -v

PHP 5.5.16-1~dotdeb.1 (cli) (built: Aug 22 2014 14:18:50)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
with Zend OPcache v7.0.4-dev, Copyright (c) 1999-2014, by Zend Technologies
Andreyka
На сайте с 19.02.2005
Offline
822
#1

Nginx не зможе - профайлинг допоможе

Не стоит плодить сущности без необходимости
hqhost
На сайте с 10.09.2010
Offline
49
#2

попробуйте разнести сайты на разные пулы, а также перепроверьте каталоги сессий, если в них скапливается большое количество файлов, то это может быть причиной задержек в работе сайтов, соответственно "нормально" работать продолжают те сайты, которые хранят информацию о сессиях вне session.save_path ( например пишут эту информацию в базу)

[Удален]
#3
Andreyka:
Nginx не зможе - профайлинг допоможе

Не совсем понятно что Вы имеете ввиду.

[Удален]
#4
hqhost:
попробуйте разнести сайты на разные пулы, а также перепроверьте каталоги сессий, если в них скапливается большое количество файлов, то это может быть причиной задержек в работе сайтов, соответственно "нормально" работать продолжают те сайты, которые хранят информацию о сессиях вне session.save_path

К несчастью все сессии всех сайтов лежат в одной и той же папке, (это видно из конфигурации php-fpm который я написал выше). При этом при рестарте php-fpm никто не удаляет старые сессии, но скорость сайтов возвращается в норму.

kxk
На сайте с 30.01.2005
Offline
990
kxk
#5

hqhost, +1 Я вообще держу сессии всех клиентов в памяти :)

Ваш DEVOPS
[Удален]
#6

Еще раз говорю, сессии тут не причем, в папке сессий всего 344 файла. Разнести сайты на разные пулы не могу - так как это виртуальный хостинг для клиентов. а разные пулы - это разные аккаунты в панели хостинга - а следствие - клиент должен платить больше. К тому же я словил такую же ситуацию на тестовом хостинге специально для себя. там вообще один сайт, и под него отдельный пул был. На самом сервере всего два клиента, нагрузка на самом сервере 0%

Вырезка из atop


CPU | sys 2% | user 0% | | irq 0% | | idle 3199% | wait 0% | | | steal 0% | guest 0% | | curf 2.30GHz | curscal 100% |
DSK | sda | busy 0% | | read 0 | write 6 | | KiB/r 0 | KiB/w 41 | | MBr/s 0.00 | MBw/s 0.12 | | avq 0.00 | avio 0.00 ms |
NET | eth0 0% | pcki 33 | | pcko 38 | si 10 Kbps | so 186 Kbps | coll 0 | | mlti 0 | erri 0 | erro 0 | | drpi 0 | drpo 0 |

Сервер без гипертридинга, конфигурация AMD G34 6376 два процессора по 16 ядер, 32Gb RAM DDR3, хардварный рейд Adaptec 5405 RAID10

N
На сайте с 06.05.2007
Offline
419
#7
artful172:
Сообщение от Andreyka Посмотреть сообщение
Nginx не зможе - профайлинг допоможе

ну тут же все понятно :) Программер прийде - порядок наведе !

традиционные методы для программиста - использование полноценных профайлеров типа php-xdebug.

С практической точки зрения администраторы решают эту же задачу делая поверхностные предположения об исчерпании тех или иных ресурсов, но профилирование - самый логичный. Он покажет какой именно кусок кода php самый медленный. Тормозит функция создания сессий - это сразу всплывет.

Кнопка вызова админа ()
[Удален]
#8

я думаю программисты тут не помогут. Так как у клиента много сайтов на одной и той же CMS, тест производительности сервера делает CMS, то есть тест скорости делается одним и тем же методом на разных сайтах. И все сайты смотрят на один и тот же пул php-fpm. Так почему один и тот же код на разных сайтах выполняется с разной скоростью ? Причем после перезапуска php-fpm на всех сайтах производительность становиться одинаковой. А потом на некоторых (всегда на разных) сайтах производительность падает в 10 раз. И визуально сайт отвечает намного медленнее.

Оптимизайка
На сайте с 11.03.2012
Offline
396
#9

медленно выполняющиеся php-скрипты есть? Типа аплоада, создания бэкапа из браузера?

см. request_slowlog_timeout, slowlog

сопоставьте время этих запросов с вышеописанными тормозами на др. сайтах

далее читаем тут http://habrahabr.ru/post/37206/

⭐ BotGuard (https://botguard.net) ⭐ — защита вашего сайта от вредоносных ботов, воровства контента, клонирования, спама и хакерских атак!
Andreyka
На сайте с 19.02.2005
Offline
822
#10
artful172:
Не совсем понятно что Вы имеете ввиду.

http://en.wikipedia.org/wiki/Profiling_(computer_programming)

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий