Как правильно толковать логи PHP-FMP ?

37 views
Skip to first unread message

silly_sad

unread,
Feb 12, 2008, 1:28:52 AM2/12/08
to highloa...@googlegroups.com
Вот например растолкуйте пожалуйста вот это (кажется это при перезапуске
воркера возникает)

Feb 11 20:10:40.255563 [NOTICE] fpm_got_signal(), line 70: received SIGCHLD
Feb 11 20:10:40.255686 [NOTICE] fpm_children_bury(), line 224: child
25406 (pool main) exited with code 0 after 20494.307454 seconds
Feb 11 20:10:40.256549 [NOTICE] fpm_children_make(), line 297: child
3672 (pool main) started
Feb 11 20:10:40.259105 [WARNING] fpm_stdio_child_said(), line 183: child
3672 (pool main) said into stderr: "port_dissociate: File descriptor in
bad state"

Andrei Nigmatulin

unread,
Feb 12, 2008, 5:48:12 AM2/12/08
to highloa...@googlegroups.com
On Tuesday 12 February 2008 09:28, silly_sad wrote:
> Вот например растолкуйте пожалуйста вот это (кажется это при перезапуске
> воркера возникает)
>
> Feb 11 20:10:40.255563 [NOTICE] fpm_got_signal(), line 70: received SIGCHLD

"Master process получил синхронный SIGCHLD"

> Feb 11 20:10:40.255686 [NOTICE] fpm_children_bury(), line 224: child
> 25406 (pool main) exited with code 0 after 20494.307454 seconds

Если php-fpm version >= 0.5.5, то:

"Child pid 25406 завершился после исполнения max_requests запросов через 20494
секунд после запуска процесса"

Иначе

"Child pid 25406 завершился через 20494 секунд после запуска процесса"

> Feb 11 20:10:40.256549 [NOTICE] fpm_children_make(), line 297: child
> 3672 (pool main) started

"Вместо него запущен новый child pid 3672"

> Feb 11 20:10:40.259105 [WARNING] fpm_stdio_child_said(), line 183: child
> 3672 (pool main) said into stderr: "port_dissociate: File descriptor in
> bad state"

"Child pid 3672 записал в stderr эту ошибку. Ее получил master process и
записал в лог."

Сама ошибка, видимо, связана с использованием event ports на солярке,
выявляется она здесь: libevent/evport.c:evport_del().

Не берусь сразу так судить о ее причинах. Какая это версия php-fpm ?


--
Andrei Nigmatulin
GPG PUB KEY 6449830D

Now I lay me down to sleep(3)
Pray the OS my core to keep
If I die before I wake
Pray the Disk my core to take

Andrey N. Oktyabrski

unread,
Feb 12, 2008, 5:53:52 AM2/12/08
to highloa...@googlegroups.com
Andrei Nigmatulin wrote:
> Сама ошибка, видимо, связана с использованием event ports на солярке,
> выявляется она здесь: libevent/evport.c:evport_del().
Кстати, а имеет ли смысл пытаться подсунуть libev вместо libevent при
компиляции?

Andrei Nigmatulin

unread,
Feb 12, 2008, 6:06:53 AM2/12/08
to highloa...@googlegroups.com

Да, я об этом писал тут:

http://groups.google.com/group/highload-php-ru/msg/3a175e297b487f88

Но сначала надо усиленно тестировать, это довольно большие изменения.

silly_sad

unread,
Feb 12, 2008, 6:28:11 AM2/12/08
to highloa...@googlegroups.com
Andrei Nigmatulin wrote:

>> Feb 11 20:10:40.259105 [WARNING] fpm_stdio_child_said(), line 183: child
>> 3672 (pool main) said into stderr: "port_dissociate: File descriptor in
>> bad state"
>
> "Child pid 3672 записал в stderr эту ошибку. Ее получил master process и
> записал в лог."
>
> Сама ошибка, видимо, связана с использованием event ports на солярке,
> выявляется она здесь: libevent/evport.c:evport_del().
>
> Не берусь сразу так судить о ее причинах. Какая это версия php-fpm ?

php-5.2.4-fpm-0.5.3

Andrei Nigmatulin

unread,
Feb 12, 2008, 6:35:03 AM2/12/08
to highloa...@googlegroups.com

Тогда надо апгрейдиться до текущей версии: в php-fpm 0.5.4 libevent был
обновлен до 1.4.0, а в нем уже исправлена похожая ошибка:

http://levent.svn.sourceforge.net/viewvc/levent/branches/patches-1.4/libevent/ChangeLog?revision=523&view=markup

...
o Fix evport implementation: port_disassociate called on unassociated events
resulting in bogus errors; more efficient memory management; from Trond
Norbye and Prakash Sangappa


Помимо этого, на php-fpm-0.5.5 надо будет наложить два вот этих исправления:

http://groups.google.com/group/highload-php-ru/msg/1a167abc06e0ac1c

Andrey N. Oktyabrski

unread,
Feb 12, 2008, 6:36:05 AM2/12/08
to highloa...@googlegroups.com
Andrei Nigmatulin wrote:
>> Кстати, а имеет ли смысл пытаться подсунуть libev вместо libevent при
>> компиляции?
> Да, я об этом писал тут:
> http://groups.google.com/group/highload-php-ru/msg/3a175e297b487f88
> Но сначала надо усиленно тестировать, это довольно большие изменения.
То я читал. Я неправильно выразился - имел в виду
libevent-X+libev-X.tar.gz (http://dist.schmorp.de/libev/)

Andrei Nigmatulin

unread,
Feb 12, 2008, 6:40:00 AM2/12/08
to highloa...@googlegroups.com

Имхо стоит попробовать.

silly_sad

unread,
Feb 15, 2008, 8:49:00 AM2/15/08
to highloa...@googlegroups.com
Andrei Nigmatulin wrote:
> On Tuesday 12 February 2008 14:36, Andrey N. Oktyabrski wrote:
>> Andrei Nigmatulin wrote:
>>>> Кстати, а имеет ли смысл пытаться подсунуть libev вместо libevent при
>>>> компиляции?
>>> Да, я об этом писал тут:
>>> http://groups.google.com/group/highload-php-ru/msg/3a175e297b487f88
>>> Но сначала надо усиленно тестировать, это довольно большие изменения.
>> То я читал. Я неправильно выразился - имел в виду
>> libevent-X+libev-X.tar.gz (http://dist.schmorp.de/libev/)
>
> Имхо стоит попробовать.

Я попробовал:
на SunOS 5.10 Generic_127112-07 i386
libevent-1.4.1-beta+libev-3.0
PHP-5.2.5
FPM-0.5.5
Два ваших патчика приложил

Докладываю:
работает.
но при старте всего 28 чайлдов пишет в лог
756 вот таких записей:

Feb 15 16:30:45.226648 [WARNING] fpm_stdio_child_said(), line 191: child
20471 (pool default) said into stderr: "[warn] port_dissociate:
Permission denied"
Feb 15 16:30:45.226657 [WARNING] fpm_stdio_child_said(), line 191: child
20471 (pool default) said into stderr: "[warn] port_dissociate:
Permission denied"
Feb 15 16:30:45.226667 [WARNING] fpm_stdio_child_said(), line 191: child
20471 (pool default) said into stderr: "[warn] port_dissociate:
Permission denied"
Feb 15 16:30:45.226676 [WARNING] fpm_stdio_child_said(), line 191: child
20471 (pool default) said into stderr: "[warn] port_dissociate:
Permission denied"

(Почти одномоментно)
Мне в данном случае не понятно о каком порте идёт речь.

Что вы можете посоветовать?


Andrei Nigmatulin

unread,
Feb 15, 2008, 8:59:00 AM2/15/08
to highloa...@googlegroups.com

Это solaris event ports.

> Что вы можете посоветовать?

Как workaround можно не использовать ports, это не сильно скажется на
производительности. Для этого перед запуском "php-cgi --fpm" надо выставить
переменную окружения EVENT_NOEVPORT=1

Andrey N. Oktyabrski

unread,
Feb 15, 2008, 10:20:21 AM2/15/08
to highloa...@googlegroups.com
Andrei Nigmatulin wrote:
>> Что вы можете посоветовать?
> Как workaround можно не использовать ports, это не сильно скажется на
> производительности. Для этого перед запуском "php-cgi --fpm" надо выставить
> переменную окружения EVENT_NOEVPORT=1
А дальше как? Это в fpm, в libev/libevent, или в солярке проблема -
неизвестно? Это не для того, чтоб виноватого найти, а чтоб выяснить кого
лечить/багрепортить :-)

Andrei Nigmatulin

unread,
Feb 15, 2008, 10:37:25 AM2/15/08
to highloa...@googlegroups.com

Скорее всего это проблема в libevent или в солярке.

Код php-fpm всего лишь использует libevent как библиотеку, и на linux/freebsd
таких проблем с ней нет.

Reply all
Reply to author
Forward
0 new messages