Отдельные php-fpm пулы для высоконагруженного трекера

12
S
На сайте с 08.02.2013
Offline
73
3558

О сервере: Debian 7, mysql, nginx, php-fpm и больше ничего.

По вечерам nginx зачастую выдает 502 bad gateway.

Есть ли возможность перенести как-то нагрузку на файлы announce.php shoutbox.php и scrape.php на отдельные php-fpm пулы? и как это можно сделать? спасибо за возможную помощь.

Конфиг пула домена:


[domain.ru]
# Сокет, с которым работает хост
listen = /var/run/domain.ru.sock
user = user
group = user
listen.mode = 0666
chdir = /home/user/data/www/domain.ru/
php_admin_value[info_tmp_dir] = /usr/share/tmp
php_admin_value[soap.wsdl_cache_dir] = /usr/share/tmp
#php_admin_value[date.timezone] = Asia/Moscow
# тут значения можно поменять, в зависимости от нагрузки на сайт
#process.max = 128
#emergency_restart_interval = 5m
rlimit_core = unlimited
#process.priority = -19
pm = dynamic
pm.max_children = 50
pm.start_servers = 16
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 200
request_terminate_timeout = 90s
#request_slowlog_timeout = 5s
[Удален]
#1

pm.max_requests я бы увеличил.

А ответ на ваш вопрос находится в логе php-fpm

/var/log/php-fpm.log

Возможно нехватает кол-ва процессов.

VK
На сайте с 29.12.2011
Offline
42
#2

Да, можете разнести, настроив отдельные locations в nginx, которые будут отправлять на нужные Вам пулы. Но Вы уверены, что сможете правильно настроить количество процессов, которые Вам необходимы?

S
На сайте с 08.02.2013
Offline
73
#3
WapGraf:
pm.max_requests я бы увеличил.

А ответ на ваш вопрос находится в логе php-fpm
/var/log/php-fpm.log

Возможно нехватает кол-ва процессов.

поднимал до 500, все так же была 502-ая через раз вчерась вечером.

в логах ничего нет, кроме ошибки на попытку использования неверного параметра:

[28-Oct-2014 20:01:17] ERROR: [pool domain.ru] 'slowlog' must be specified for use with 'request_slowlog_timeout'
[28-Oct-2014 20:01:17] ERROR: failed to post process the configuration
[28-Oct-2014 20:01:17] ERROR: FPM initialization failed



---------- Добавлено 29.10.2014 в 16:41 ----------

V2NEK:
Да, можете разнести, настроив отдельные locations в nginx, которые будут отправлять на нужные Вам пулы. Но Вы уверены, что сможете правильно настроить количество процессов, которые Вам необходимы?

Спасибо за наводку про локейшены. да, конечно, же - путем реального мониторинга могу выставить нужные значения..

Тут хотелось бы услышать про примеры в nginx.conf

например для файла announce.php, предполагаю будет так :

location ~\announce.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/announce.sock; # Сокет php-fpm
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}

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

VK
На сайте с 29.12.2011
Offline
42
#4

"location ~ /announce.php$ {"

И отключите fix_pathinfo в php, сможете избавиться от костыля с fastcgi_split_path_info.

S
На сайте с 08.02.2013
Offline
73
#5
V2NEK:
"location ~ /announce.php$ {"
И отключите fix_pathinfo в php, сможете избавиться от костыля с fastcgi_split_path_info.

спасибо, тогда try_files заменим на : try_files $document_root$fastcgi_script_name =404; ?

[Удален]
#6

Какая версия php-fpm?

VK
На сайте с 29.12.2011
Offline
42
#7

Shardik, try_files трогать не надо, подойдут переменные из стандартной конфигурации nginx

Andreyka
На сайте с 19.02.2005
Offline
822
#8

Конечно можно

Заводите отдельный пул, назначаете в локейшенах использование этого пула

Не стоит плодить сущности без необходимости
S
На сайте с 08.02.2013
Offline
73
#9

спасибо.. поставил сервер с новыми конфигами, жду вечера.. и отпишусь с утра, как прошло

---------- Добавлено 29.10.2014 в 18:01 ----------

WapGraf:
Какая версия php-fpm?

# php5-fpm -v

PHP 5.4.4-14+deb7u14 (fpm-fcgi) (built: Aug 21 2014 08:40:57)

Copyright (c) 1997-2009 The PHP Group

Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies

with XCache v2.0.0, Copyright (c) 2005-2012, by mOo

---------- Добавлено 29.10.2014 в 18:03 ----------

V2NEK:
Shardik, try_files трогать не надо, подойдут переменные из стандартной конфигурации nginx

хорошо, пусть будет так:


location ~\announce.php$ {
try_files $uri =404;
#fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/announce.sock; # Сокет php-fpm
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}
location ~\scrape.php$ {
try_files $uri =404;
#fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/scrape.sock; # Сокет php-fpm
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}

location ~\shoutbox.php$ {
try_files $uri =404;
#fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/shoutbox.sock; # Сокет php-fpm
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}
N
На сайте с 06.05.2007
Offline
419
#10

А зачем вам вообще "высоконагруженный" трекер на php ? Это изначально проигрышный вариант. У вас один пользователь, который даже на сайт неделями не заходит, но раз в несколько минут круглосуточно нагружает запросами.

Бросайте это. смотрите в сторону XBT Tracker и т д

shoutbox.php

Это чат ? то же совет. Толку мало, а нагрузки много.

Кнопка вызова админа ()
12

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