NGINX + PHP-FPM: Можно ли связать PID php-fpm для доступа к записи журнала?

Мы использовали NGINX и php-fpm.

Мы заметили, что некоторые запросы зависают в течение длительного времени (10+, 20+ минут ...) с помощью команды top .
Кроме того, некоторые подозрительные запросы (я имею в виду ботов) были обнаружены в записи журнала доступа (NGINX), но я не уверен, имеют ли эти подозрительные запросы какое-либо отношение к зависшим запросам или нет.

Итак, мой главный вопрос: :

Можно ли (через config или что-то еще) связать PID php-fpm с записью URL в журнале доступа?
Или есть какой-нибудь инструмент, который мог бы помочь мне с этой задачей?

Дополнительная информация:
У нас есть исходный код, поскольку мы основные разработчики.

Заранее спасибо!

0
задан 19 January 2017 в 16:42
3 ответа

Если у вас включена страница состояния php-fpm, вы можете проверить полный режим для трассировки pid. Например, с помощью http://example.com/phpfpm-status?full должно быть возможно узнать, что происходит. (В качестве примечания по безопасности: никогда не следует оставлять такие страницы статуса общедоступными.)

0
ответ дан 4 December 2019 в 16:22

Определить правильный процесс php-fpm со стороны nginx проблематично, потому что вы, по сути, общаетесь с черным ящиком через сокет unix или сокет tcp, не говоря уже о потоках.

Вы можете атаковать проблему со стороны php. Вы можете использовать getmypid () из своего php-скрипта или, если это не ваш код, вы можете использовать параметр php_value auto_prepend_file в конфигурации php fpm. Таким образом, вы можете вставить свой собственный код в начало каждого файла php и зарегистрировать pid вместе с соответствующим REQUEST_URI по своему желанию. У вас есть желаемое соединение. Однако приготовьтесь к большим операциям ввода-вывода на загруженный сайт ...

Если вам просто нужен pid, может быть проще включить php-status, как описано здесь https://easyengine.io/tutorials/php/fpm -status-page / и проверьте свой сервер / php-status? full

1
ответ дан 4 December 2019 в 16:22

Вам следует использовать медленный журнал PHP-FPM: Установка request_slowlog_timeout , а также slowlog - см. документацию по конфигурации php-fpm - должна предоставить вам трассировку стека всех длительно выполняющихся процессов php-fpm; включая их PID.

0
ответ дан 4 December 2019 в 16:22

Теги

Похожие вопросы