Постоянно падает php-fpm приходится делать рестарт

1 2345 6
R
На сайте с 22.06.2007
Offline
174
#21
myhand:
Которая абсолютно никак не поможет ТС найти "тяжелые" скрипты.

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

Но что с того, если мне эти скрипты нужны, ускорить их по понятной причине и не получится...

myhand:
Еще раз: баг в каком-то модуле php (пример возможной причины сегфолта) и наличие медленно работающих скриптов - связаны только вашей фантазией.

Проблема как раз в наличии медленно работающих скриптов. Баг начал проявляться после того, как та система с медленными скриптами была добавлена на сервер.

M
На сайте с 10.08.2012
Offline
1
#22
myhand:
Самого "интересного" не рассказали - таки причем сегфолт к какой-то "медленности вызова функции"?

Тем паче, что "связь" настолько странная - что даже во времени никакой корреляции не видно. Или чукча просто не читатель?

Это не моя фантазия, читай ответ автора темы. Одни люди пишут софт с ошибками, другие не обновляют софт.

myhand:
"Отсюда не видно", что имеет смысл увеличивать что-то даже и в два раза, не то что в 20. Забыли в подписи вывеску "лечим по фотографиям"?

5 процессов это не более 5 пользователей включая внутренний запросы. Обычный дефолт для средних серверов 100-150.

myhand:
Которая абсолютно никак не поможет ТС найти "тяжелые" скрипты.

У него разрешено только пять процессов. 10-100 это совершенно нормальные значения.

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

Смело увеличивай pm.max_children до 20. Это совершенно нормальное значение для выделенного сервера с 3-4Гб памяти и вашей задачи.

Ссылка специально для "специалистов по Debian" php.net/manual/ru/install.fpm.configuration.php и далее pm.max_children

5 это число между 4 и 6. У меня на серверах pm.max_children до 1000, если вы конечно работали с мощными серверами и большими нагрузками.

Если для Вас pm.max_children=5 нормально, то вы наверно обслуживаете VPS-ы за $10.

Unix администратор email: USERNAME@gmail.com
R
На сайте с 22.06.2007
Offline
174
#23
mloezk:
5 процессов это не более 5 пользователей включая внутренний запросы. Обычный дефолт для средних серверов 100-150.

НУ я не слишком большой специалист, но позволю себе с вами не согласится. Один чилдрен может обслуживать не 1 процесс, а много, сколько именно зависит от других параметров. Если бы это было только 5, то никак такое значение по дефолту в настройках не могло бы даже быть.

---------- Добавлено 11.08.2012 в 17:44 ----------

mloezk:
Это не моя фантазия, читай ответ автора темы.

Да, проблема в медленных скриптах, но все равно же при правильных настройках не должен падать php, ну пусть выполняет медлнее - не вопрос, но почему он должен от этого падать.

M
На сайте с 10.08.2012
Offline
1
#24
Reise:
НУ я не слишком большой специалист, но позволю себе с вами не согласится. Один чилдрен может обслуживать не 1 процесс, а много, сколько именно зависит от других параметров. Если бы это было только 5, то никак такое значение по дефолту в настройках не могло бы даже быть.

Дефолт рассчитан на VPS с 256-512Мб

1 процесс = 1 рабочий процесс PHP, в лучшем случаи 1 запрос

---------- Добавлено 11.08.2012 в 18:47 ----------

Reise:
Да, проблема в медленных скриптах, но все равно же при правильных настройках не должен падать php, ну пусть выполняет медлнее - не вопрос, но почему он должен от этого падать.

Какая версия PHP?

Ссылка специально для "специалистов по Debian" php.net/manual/ru/install.fpm.configuration.php и далее pm.max_children

5 это число между 4 и 6. У меня на серверах pm.max_children до 1000, если вы конечно работали с мощными серверами и большими нагрузками.

Если для Вас pm.max_children=5 нормально, то вы наверно обслуживаете VPS-ы за $10.

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

Ну раз нет желания пускать за свой сервер, то я даю правильный путь

1. Собрать php с debug

2. Подождать когда выпадет в кору

3. Натравить gdb и найти прчину

Учитывая уровень знаний, займет пару месяцев

Удачи!

Не стоит плодить сущности без необходимости
M
На сайте с 16.09.2009
Offline
278
#26
Reise:
Так я знаю где эти медленные скрипты

Собственно, я и не вам отвечал :)

Reise:
Проблема как раз в наличии медленно работающих скриптов. Баг начал проявляться после того, как та система с медленными скриптами была добавлена на сервер.

Да, я тоже склонен так думать. И писал вам об этом выше.

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

mloezk:
Это не моя фантазия

Ваша. Вы не обращаете внимание даже на то, что ошибки никак не коррелируют.

mloezk:
читай ответ автора темы.

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

mloezk:
5 процессов это не более 5 пользователей включая внутренний запросы.

Да ну :) Мы еще и как работает HTTP не знаем?

Даже ТС понимает, что с вашей "арихметикой" - рановато еще выбираться из школы...

mloezk:
Обычный дефолт для средних серверов 100-150.

Ну-ну. Для тех, кто не понимает для чего данный лимит нужен, зачем вообще системный администратор серверу и не постесняется отдать ~4Gb "просто так" толпе "нервно курящих" php-fpm детей (20/30Mb - вполне типичные значения).

mloezk:
Если для Вас pm.max_children=5 нормально, то вы наверно обслуживаете VPS-ы за $10.

Телепатия искрит...

Andreyka:
Ну раз нет желания пускать за свой сервер, то я даю правильный путь
1. Собрать php с debug

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

Абонементное сопровождение серверов (Debian) Отправить личное сообщение (), написать письмо ().
M
На сайте с 10.08.2012
Offline
1
#27
myhand:
Ваша. Вы не обращаете внимание даже на то, что ошибки никак не коррелируют.

В PHP было много ошибок... есть ошибки SIGSEGV при получении request_terminate_timeout... есть ошибки SIGSEGV при использовании epoll и достижения max_children.

myhand:
Мы еще и как работает HTTP не знаем?

Превосходно знаю HTTP. Не вижу аргументов.

myhand:
Ну-ну. Для тех, кто не понимает для чего данный лимит нужен, зачем вообще системный администратор серверу и не постесняется отдать ~4Gb "просто так" толпе "нервно курящих" php-fpm детей (20/30Mb - вполне типичные значения).

Вы не понимаете зачем нужен лимит и почему он равен 5.

Для "супер" админов поясняю:

весть софт по дефолту не должен вызывать OOM, на любом железе. С учетом max_memory 128M выбрали маленький max_children...что бы скрипты, которые могут использовать 128M не вызывали OOM.

myhand:
Телепатия искрит...

Мне жалко ваших клиентов, которые работают на дефолтных настройках PHP... Пора наверно научиться конфигурировать PHP, что бы он мог обрабатывать более 5-ти запросов.

M
На сайте с 16.09.2009
Offline
278
#28
mloezk:
В PHP было много ошибок... есть ошибки SIGSEGV

Не сомневаюсь. Просто ваше предположение о какой-либо связи сегфолта и превышения max_children из области "почему бы и нет". Только и всего.

mloezk:
Превосходно знаю HTTP. Не вижу аргументов.

Покуда "процессы" с "пользователями" путать будете - и не увидите. 5 - это просто столько одновременных обрабатываемых (не в беклоге, форкнут процесс) запросов к бакенду. Не больше. Одновременных "пользователей" же на сайте может быть за сотни.

mloezk:
Вы не понимаете зачем нужен лимит и почему он равен 5.

Правда? 😂

mloezk:
весть софт по дефолту не должен вызывать OOM, на любом железе. С учетом max_memory 128M выбрали маленький max_children...что бы скрипты, которые могут использовать 128M не вызывали OOM.

Ну, "супер-админы" вызовут ООМ иначе - отдадут всю память толпе php-fpm, так? Впрочем, им даже больше "повезет" - сервер просто уйдет в своп.

mloezk:
Мне жалко ваших клиентов, которые работают на дефолтных настройках PHP...

Вас закоротило?

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

PS: А вообще, если для скриптов сайтов типична работа в виде "прокси" (парсеры контента внешних сайтов) - это может быть случай, когда не нужно было городить всякие nginx-сы и ТС хватило бы обычного апача.

M
На сайте с 10.08.2012
Offline
1
#29
myhand:
Покуда "процессы" с "пользователями" путать будете - и не увидите. 5 - это просто столько одновременных обрабатываемых (не в беклоге, форкнут процесс) запросов к бакенду. Не больше. Одновременных "пользователей" же на сайте может быть за сотни.

Пять пользователей могут одновременно запросить динамику... может быть еще хуже, если каждый запросить несколько запросов к php

Раз Вы такие умный, что не посоветовал отдельный php-fpm... можно медленные скрипты(сайт) и нормальные разделить. Для нормальных max_children=5(или 10) и медленным max_children=5(или 10)

А еще можно формулу привести max_children=(ALL_MEMORY - (NGINX/MYSQL/etс)) / 25M (точное значение узнать в ps)

Мой совет, отдельные php-fpm и подбор параметров max_children. И конечно обновление PHP

M
На сайте с 16.09.2009
Offline
278
#30
mloezk:
Пять пользователей могут одновременно запросить динамику... может быть еще хуже, если каждый запросить несколько запросов к php

И "одновременно" ее получат... Разница невелика, если скрипты не по секунде отрабатывают. Будет больше запросов к динамике - подождут в backlog. Если увеличите maxclients - выжрут при этом больше памяти и будут тоже ждать, просто в разных местах обработки скрипта. Что лучше - хороший вопрос, но с необходимостью выставить maxclients > 20-30 сталкивался достаточно редко.

mloezk:
Раз Вы такие умный, что не посоветовал отдельный php-fpm...

Патамушта я умный и учитываю кому и что советую. Это может быть непростым для ТС.

mloezk:
А еще можно формулу привести max_children=(ALL_MEMORY - (NGINX/MYSQL/etс)) / 25M (точное значение узнать в ps)

Ну, на таком уровне я ее привел. Только формулой язык назвать не поворачивается.

1 2345 6

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