powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Ошибки php-fpm (SIGKILL) и (SIGABRT)
1 сообщений из 1, страница 1 из 1
Ошибки php-fpm (SIGKILL) и (SIGABRT)
    #39342012
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VPS, памяти мало - 512 Мб. Файл подкачки 1025 Мб.
Оперативная память вся заполнена, файл подкачки периодически тоже полностью заполняется.

nginx + php-fpm
Запросы к php-fpm поступают примерно 1,5 штуки в секунду. Максимальное количество активных php-процессов = 10 (если pm.max_children увеличить)

Проблемы следующие :
1 . Если в настройках php-fpm прописать pm.max_children = 6, то 1-2 раза в минуту в php-fpm вылезают следующие ошибки:
WARNING: [pool ...] child 29936 said into stderr: "*** Error in `php-fpm: pool ...': free(): invalid pointer: 0x00007f3fa80b63b8 ***"
WARNING: [pool ...] child 29936 exited on signal 6 (SIGABRT) after 127.304479 seconds from start

При этом в логах nginx ошибок и предупреждений нет. Т.е. nginx нормально получает ответ от php-fpm

Что это за ошибка ? Происходит только на стороне php-fpm и никак не затрагивает nginx.
Складывается такая картина: процесс php-fpm, сгенерировав html-код, нормально отдаёт его nginx'у, а затем при попытке освободить после себя память (команда free по некорректному адресу) терпит крах и падает. И всё это происходит после нормальной отдачи контента nginx'у.

2 . Если увеличить pm.max_children в 10 раз - до 60 (ну и пропорционально pm.start_servers , pm.min_spare_servers , pm.max_spare_servers ), то получаем следующую картину:
1-2 раза в минуту в логах php-fpm получаем ошибки: WARNING: [pool ...] child 29628 exited on signal 9 (SIGKILL) after 316.199535 seconds from start
2-4 раза в минуту в логах nginx получаем ошибки: [error] 28026#28026: *37051 recv() failed (104: Connection reset by peer) while reading response header from upstream

А вот здесь логика не понятна. Что происходит в этом случае ?
Сигнал SIGKILL получают php-процессы после обработки [pm.max_requests] запросов (см.ниже). В данном случае такой же сигнал они получают по некой иной причине ? Причём в процессе генерации html-контента. Падают и в итоге nginx не получет данные и тоже ругается. Вопрос в том, что здесь происходит с php-fpm процессами ?

P.S . Значение [pm.max_requests] я поставил в заведомо большое (недостижимое) значение, чтобы отделить мух от котлет.

3 . Ну а если [pm.max_requests] поставить в какое-либо приемлемое (малое) значение, то при достижение php-fpm-процессами этого лимита картину получаем следующую:
php5-fpm генерирует предупрежедение: WARNING: [pool ...] child 27218 exited on signal 9 (SIGKILL) after 163.887046 seconds from start
nginx генерирует ошибку: [error] 27273#27273: *3117 recv() failed (104: Connection reset by peer) while reading response header from upstream
А вот здесь не понятно, почему при достижении лимита [pm.max_requests] php-процессы завершаются в момент генерации html-контента для nginx, а не после отдачи контента nginx'у ?
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Ошибки php-fpm (SIGKILL) и (SIGABRT)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]