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"
"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
Да, я об этом писал тут:
http://groups.google.com/group/highload-php-ru/msg/3a175e297b487f88
Но сначала надо усиленно тестировать, это довольно большие изменения.
>> 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
Тогда надо апгрейдиться до текущей версии: в php-fpm 0.5.4 libevent был
обновлен до 1.4.0, а в нем уже исправлена похожая ошибка:
...
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
Имхо стоит попробовать.
Я попробовал:
на 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"
(Почти одномоментно)
Мне в данном случае не понятно о каком порте идёт речь.
Что вы можете посоветовать?
Это solaris event ports.
> Что вы можете посоветовать?
Как workaround можно не использовать ports, это не сильно скажется на
производительности. Для этого перед запуском "php-cgi --fpm" надо выставить
переменную окружения EVENT_NOEVPORT=1
Скорее всего это проблема в libevent или в солярке.
Код php-fpm всего лишь использует libevent как библиотеку, и на linux/freebsd
таких проблем с ней нет.