Ошибка 500 и fcgid

12
A
На сайте с 04.01.2009
Offline
149
1350

Добрый вечер, периодически сайт отдает ошибку 500, с чем это связано понять не могут.

В лога сайта в это время идет такая ошибка


[Fri Oct 04 15:37:30.570457 2019] [fcgid:warn] [pid 31136] (104)Connection reset by peer: [client ******:36557] mod_fcgid: error reading data from FastCGI server
[Fri Oct 04 15:37:30.570575 2019] [core:error] [pid 31136] [client ******:36557] End of script output before headers: index.php

В логах апача в это время такая ошибка

[Fri Oct 04 15:37:33.710941 2019] [fcgid:error] [pid 25454] mod_fcgid: process /var/www/php-bin-isp-php73/****/php(32447) exit(communication error), get unexpected signal 11

конфиг /etc/apache2/mods-available/fcgid.conf


<IfModule mod_fcgid.c>
FcgidProcessLifeTime 30
FcgidMaxProcesses 3000
FcgidMaxProcessesPerClass 700
FcgidConnectTimeout 30
FcgidIOTimeout 360
FcgidBusyTimeout 3600
FcgidMaxRequestLen 104857600
<IfModule mod_mime.c>
AddHandler fcgid-script .fcgi
</IfModule>
</IfModule>

режим работы php - FastCGI (Apache) 7.3.4 (alt)

Как решить проблему? по гуглив вроде как FcgidBusyTimeout дожна её решить но добавить FcgidBusyTimeout 3600 проблема осталась без изменений, может FcgidMaxRequestInMem нужно прописать?

M
На сайте с 17.09.2016
Offline
124
#1

signal 11

Это сам php упал, проблема в каком-то php модуле или самом php

Настройками конфигов Вы это не поправите

rustelekom
На сайте с 20.04.2005
Offline
522
#2

пхп процессы могли размножиться и в этом случае их "сверху" могут убивать. Либо по ограничению количества процессов на аккаунт, либо по занятой памяти (kill-OOM). Также, ещё, как уже было сказано выше, процесс мог "самоубиться" если есть ошибки в скриптах (например, бывает несовместимость с модулями пхп).

SSD VPS, SSD хостинг и выделенные серверы в Германии или РФ, FTP хранилища, регистрация доменов и SSL сертификаты ( https://www.robovps.biz/ ) Контакты: Telegram ( https://t.me/rustelekom_bot )
A
На сайте с 04.01.2009
Offline
149
#3
rustelekom:
пхп процессы могли размножиться и в этом случае их "сверху" могут убивать. Либо по ограничению количества процессов на аккаунт, либо по занятой памяти (kill-OOM). Также, ещё, как уже было сказано выше, процесс мог "самоубиться" если есть ошибки в скриптах (например, бывает несовместимость с модулями пхп).

как найти точную причину? если была бы не совместимость со скриптом то это наверно происходило постоянно в одном и том же месте, но если вылезла эта ошибка и обновить страницу то она загружается уже нормально без ошибок.

rustelekom
На сайте с 20.04.2005
Offline
522
#4

Сколько памяти на сервере? И какой это сервер? Если виртуальный и на базе OpenVZ то стоит проверить, что пишет в /proc/beachcomber - в этой виртуализации при оверселле, может не хватать общей памяти физического сервера и тогда процессы могут убиваться в клиентских впс.

A
На сайте с 04.01.2009
Offline
149
#5
rustelekom:
Сколько памяти на сервере? И какой это сервер? Если виртуальный и на базе OpenVZ то стоит проверить, что пишет в /proc/beachcomber - в этой виртуализации при оверселле, может не хватать общей памяти физического сервера и тогда процессы могут убиваться в клиентских впс.

Это vds на Kernel-based Virtual Machine

Процессор Common KVM processor 2400.084 MHz (6 cores)

Оперативная память 1539 / 16085 MiB

top

KiB Mem: 16471272 total, 13947228 used, 2524044 free, 300780 buffers

KiB Swap: 487420 total, 49780 used, 437640 free. 11508732 cached Mem

как я понимаю расходуется порядка 1.5г в кеше11.5г и свободно 2.5г

панель ISPmanager показывает, что расход памяти 10%, процессор тоже за редким исключением показывает максимум 25%, как бы вроде нехватки ресурсов не наблюдается.

Может просто где то в настройках fcgid или nginx нужно выделить больше памяти для процессов?

еще такой момент, что сайт работает, альтернативной версии 7.3.4 (alt) по умолчанию в ISPmanager идет 5.6.24 (native)

lealhost
На сайте с 07.06.2014
Offline
136
#6

А директива log_errors в php стоит в положении On (1)?

11 сигнал это ошибка сегментации, это может быть как внутренний баг PHP интерпретатора, так и проблемы с, например, оперативной памятью, либо битые модули PHP.

Рекомендую проверить директиву log_errors, если отключена, нужно включить. Есть шанс, что PHP что-то пишет перед смертью.

Также посмотрите сыпется ли какое сообщение в syslog по пути /var/log/messages (centos) или аналогичный для других ОС (может быть /var/log/syslog ).

A
На сайте с 04.01.2009
Offline
149
#7
lealhost:
А директива log_errors в php стоит в положении On (1)?
11 сигнал это ошибка сегментации, это может быть как внутренний баг PHP интерпретатора, так и проблемы с, например, оперативной памятью, либо битые модули PHP.

да log_errors включено, но что то не могу понять где логи это у альтернативных версии?

lealhost:
Также посмотрите сыпется ли какое сообщение в syslog по пути /var/log/messages (centos) или аналогичный для других ОС (может быть /var/log/syslog ).

там в это время вот такая ошибка

Oct  5 15:43:48 ****** kernel: [1610653.549046] php[7457]: segfault at 7f68ca601018 ip 00007f68d15e3785 sp 00007ffcb91ad300 error 4 in mysqlnd.so[7f68d15c1000+38000]

Это означает что дело в модуле mysqlnd.so ?? или в самом mysql?? стоит MySQL 5.5.50-0+deb8u1

lealhost
На сайте с 07.06.2014
Offline
136
#8
avgaz:


Это означает что дело в модуле mysqlnd.so ??1

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

Вам не помешало бы обновить версию PHP.

У Вас стоит версия PHP 7.3.4, вот какие похожие исправления были сделаны разработчиками:

PHP 7.3.5
MySQLi:
Fixed bug #77773 (Unbuffered queries leak memory - MySQLi / mysqlnd).

PHP 7.3.7
MySQLnd:
Fixed bug #77955 (Random segmentation fault in mysqlnd from php-fpm).

Рекомендую обновить PHP до версии 7.3.7 (как минимум), так как последний баг исправленный в этой версии очень похож на ваш за исключением разницы между php-fpm и fastcgi.

A
На сайте с 04.01.2009
Offline
149
#9

lealhost, дак как его альтернативную версию php в панели ISPmanager Lite обновить то?

lealhost
На сайте с 07.06.2014
Offline
136
#10
avgaz:
lealhost, дак как его альтернативную версию php в панели ISPmanager Lite обновить то?

К сожалению, я не знаю каким образом ваш сервер получает обновления (из каких репозиториев), возможно, на форуме ispsystem подскажут.

Если вы знаете где находится библиотека mysqlnd.so для данной версии PHP, то можете самостоятельно собрать и заменить ее:

Из консоли:


cd /usr/local/src/
wget https://www.php.net/distributions/php-7.3.10.tar.gz
tar -xvf php-7.3.10.tar.gz
cd php-7.3.10
./configure --disable-all --enable-mysqlnd=shared
make -j4
cp ./modules/mysqlnd.so %OUTFILE%

Перед выполнением команды "cp" рекомендую создать копию старого файла mysqlnd.so.

%OUTFILE% - заменить на путь к старому файлу библиотеки.

После этих действия обязательно перезапустить Apache.

Большинство ошибок, с которыми можно столкнуться в момент конфигурирования или компиляции, можно легко решить, воспользовавшись гуглом. :)

12

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