Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Ошибки php-fpm (SIGKILL) и (SIGABRT)
|
|||
|---|---|---|---|
|
#18+
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'у ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2016, 03:32 |
|
||
|
|

start [/forum/topic.php?fid=23&gotonew=1&tid=1460868]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
26ms |
get topic data: |
10ms |
get first new msg: |
6ms |
get forum data: |
3ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 255ms |
| total: | 377ms |

| 0 / 0 |
