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

1 2345 6
Andreyka
На сайте с 19.02.2005
Offline
822
#31
myhand:


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

В нормальном дистре пчих не падает с сегфолтом.

Не стоит плодить сущности без необходимости
M
На сайте с 16.09.2009
Offline
278
#32
Andreyka:
В нормальном дистре пчих не падает с сегфолтом.

Ну, настолько "нормального" дистрибутива в природе нету. Ошибки есть везде, кроме вашей персональной параллельной Вселенной.

Абонементное сопровождение серверов (Debian) Отправить личное сообщение (), написать письмо ().
R
На сайте с 22.06.2007
Offline
174
#33

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

myhand:
Разница невелика, если скрипты не по секунде отрабатывают

Есть там у меня скрипты, которые отрабатывает не то что по сек, а по секунд 30. Причины этого описал выше, убрать их нельзя, оптимизировать тоже, но еще раз повторяю, даже мой дилетантский взгляд говорит о том, что это не должно стать причиной падения php. Соответственно возникает вопрос, что подкрутить в конфигах. Увеличивать max_children - не вариант, попробовал поставить 50, так у меня вообще нагрузка по load average к 4ке подскочила.

Andreyka:
В нормальном дистре пчих не падает с сегфолтом.

У меня debian - он по вашему ненормальный? Еще раз повторяю - все стабильно работало и летало очень долго - точно больше чем полгода, пока на сервере не появились медленные скрипты - вот корень проблемы.

R
На сайте с 22.06.2007
Offline
174
#34

Уже почти что решил проблему, но все равно чего-то не хватает, не могу разобраться чего.

И так еще раз: на сервере появились скрипты, которые выполняются слишком долго, так как при выполнении подтягивают данные извне из интернета. Это вешает php-fpm.

Как это примерно вижу я: вызывается один скрипт, он занимает часть ресурсов (чилдрен или что там - не важно) и так как он выполняется долго - он долго не освобождает занятый им ресурс, параллельно стартует другой подобный скрипт, также занимает ресурс и не совобождает и т.д. Это продолжается до тех пор пока все выделенные ресурсы для php оказываются занятыми и любые другие скрипты уже не могут выполнятся вообще - так как ресурсы заняты и еще не освободились!

Варианты решения:

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

2. Обрезать выполнение таких медленных скриптов по таймауту и освобождать ресурсы

По понятным причинам второй вариант является правильным.

Что я нашел.

В php.ini:

max_execution_time поставил 10 сек. По умолчанию там 30.

В конфигурациях nginx хостов, на которых медленные скрипты подправил параметр fastcgi_read_timeout

#fastcgi_read_timeout 180;
fastcgi_read_timeout 10;

Но как не странно не совсем помогло. С одной стороны если вручную проверять проблемные сайты с медленным скриптами, то на страницах если долго не отдается контент выдается 504, что правильно - срабатывает таймаут nginx на получения данных от php-fpm, но с другой стороны по load average и дальше творится ужас вплоть до 8ки php все равно вешается. То есть очевидно со стороны вебсервер ответ от php не ожидается, но скрипт продолжает выполнятся php-сервером, что вешает его.

Что я еще не учел? Ну вот уже проблема разжевана буквально по косточкам. Ау, админы, кто подскажет как обрывать нежелательные медленные php-процессы, освобождая ресурсы.

M
На сайте с 24.10.2011
Offline
173
#35
Reise:
Ау, админы, кто подскажет как обрывать нежелательные медленные php-процессы, освобождая ресурсы.

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

или еще вариант, в конфиге есть директива request_terminate_timeout, можно посмотреть ее

R
На сайте с 22.06.2007
Offline
174
#36
michaek:
или еще вариант, в конфиге есть директива request_terminate_timeout, можно посмотреть ее

не помогает

load average: 13.48, 8.73, 4.73

---------- Добавлено 12.08.2012 в 22:20 ----------

michaek:
что мешает медленные запросы загнать в отдельный пул? тогда они к остальным отношения иметь не будут

неплохо было бы, еще бы знать как это сделать.

M
На сайте с 24.10.2011
Offline
173
#37
Reise:
не помогает

что значит не помогает?

Reise:
неплохо было бы, еще бы знать как это сделать.

сделать, так же как и первый

R
На сайте с 22.06.2007
Offline
174
#38
michaek:
что значит не помогает?

Значит, что не решило проблему. Ресурсы, занятые кривыми скриптами не освобождаются, php и дальше вешается.

michaek:
сделать, так же как и первый

не очень силен в этом вопросе, придется видимо гуглить.

M
На сайте с 24.10.2011
Offline
173
#39
Reise:
Значит, что не решило проблему. Ресурсы, занятые кривыми скриптами не освобождаются, php и дальше вешается.

с каким значением параметра?

R
На сайте с 22.06.2007
Offline
174
#40
michaek:
с каким значением параметра?

request_terminate_timeout = 5

---------- Добавлено 12.08.2012 в 23:33 ----------

Остановил php-fpm вообще, иначе бы сервер ушел в аут. И тут решил глянуть в общий лог nginx и офигел:

82.114.69.254 - - [12/Aug/2012:17:17:44 -0500] "ET /?u=9h50v599u99ib4ci800j562hgtybgqux HTTP/1.1" 403 169 "-" "Mozilla/100"
41.155.14.81 - - [12/Aug/2012:17:17:59 -0500] "ET /?u=6z97c09eq54b66nrv7am5lx5q217uncq HTTP/1.1" 403 169 "-" "Mozilla/100"
120.61.32.223 - - [12/Aug/2012:17:17:59 -0500] "ET /?u=x4y59yb01aaab4283zolt50bs2cobw1y HTTP/1.1" 403 169 "-" "Mozilla/100"
120.61.32.223 - - [12/Aug/2012:17:17:59 -0500] "\x00" 400 173 "-" "-"
41.155.14.81 - - [12/Aug/2012:17:18:01 -0500] "\x00" 400 173 "-" "-"
217.23.7.159 - - [12/Aug/2012:17:18:10 -0500] "ET /?u=3vf3y53891789g53pqu72078k0b5zqs8 HTTP/1.1" 403 169 "-" "Mozilla/100"
217.23.7.159 - - [12/Aug/2012:17:18:10 -0500] "\x00" 400 173 "-" "-"
85.102.126.46 - - [12/Aug/2012:17:18:27 -0500] "ET /?u=78yaif3n0057zf33z03540r8k77s5b0r HTTP/1.1" 403 169 "-" "Mozilla/100"
2.176.12.83 - - [12/Aug/2012:17:18:27 -0500] "ET /?u=h2vzl4334lhq1t0d70br4b1j980jgen1 HTTP/1.1" 403 169 "-" "Mozilla/100"
85.102.126.46 - - [12/Aug/2012:17:18:27 -0500] "\x00" 400 173 "-" "-"
2.176.12.83 - - [12/Aug/2012:17:18:27 -0500] "\x00" 400 173 "-" "-"

Что это? Это какой-то ддос чтоли?

1 2345 6

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