[Решено] Одна из нод валит php-cgi в segfault

Главные вкладки

Аватар пользователя Шалтай Шалтай 20 июля 2010 в 0:49

Всем добрый день. Сервер на дебиан 5.0.5
Drupal 5.22
PHP 5.2.6-1+lenny
nginx/0.7.67 php в режиме fcgi

В логах начал замечать следующую вещь:
32515 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 95.79.163.106, server: xxx.com, request: "GET /blogs/1000413/1000207 HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000"
То есть, пытаясь отдать эту ноду, один из child-ов fcgi валится и благополучно подыхает.
Другие ноды отдаёт без проблем.

Получил core dump, в нём:

Core was generated by `/usr/bin/php-cgi -q -b localhost:9000'.
Program terminated with signal 11, Segmentation fault.
[New process 15577]
#0 0xb7d697fc in ?? () from /lib/libpcre.so.3
(gdb) bt
#0 0xb7d697fc in ?? () from /lib/libpcre.so.3
Cannot access memory at address 0xbf0f8d20
(gdb)

Собственно, виновна pcre
Но что делать дальше, я не знаю.
Вначале попробовал покрутить параметры pcre.recursion_limit и pcre.bugtrack_limit в /etc/php5/cgi/php.ini - это оказалось без толку.
Поискав на drupal.org выявил такую проблему:

http://drupal.org/node/444228
Вроде бы очень похоже, хотя речь идёт о freebsd но симптомы те же.
Оптимизацию css отключил, кэш очистил - без толку.
Попробовал применить патч который предлагается в этой ветке - без толку.

В общем, в тупике и прошу помощи.

Комментарии

Аватар пользователя vgoodvin vgoodvin 20 июля 2010 в 8:56

Не используйте php-cgi, он сразу же ложится от хорошей нагрузки. Лучше всего на его замену подойдет php-fpm или spawn-fcgi из lighttpd.
Сам как-то настраивал nginx + php-fpm на линуксе и на FreeBSD, ничего сложного и очень удобно.

Аватар пользователя Шалтай Шалтай 20 июля 2010 в 11:04

"vgoodvin" wrote:
Не используйте php-cgi, он сразу же ложится от хорошей нагрузки. Лучше всего на его замену подойдет php-fpm или spawn-fcgi из lighttpd.

Так spawn-fcgi и есть.
Кстати, это теперь не часть lighttpd а отдельный пакет.