Мы использовали NGINX и php-fpm.
Мы заметили, что некоторые запросы зависают в течение длительного времени (10+, 20+ минут ...) с помощью команды top .
Кроме того, некоторые подозрительные запросы (я имею в виду ботов) были обнаружены в записи журнала доступа (NGINX), но я не уверен, имеют ли эти подозрительные запросы какое-либо отношение к зависшим запросам или нет.
Итак, мой главный вопрос: :
Можно ли (через config или что-то еще) связать PID php-fpm с записью URL в журнале доступа?
Или есть какой-нибудь инструмент, который мог бы помочь мне с этой задачей?
Дополнительная информация:
У нас есть исходный код, поскольку мы основные разработчики.
Заранее спасибо!
Если у вас включена страница состояния php-fpm, вы можете проверить полный режим для трассировки pid. Например, с помощью http://example.com/phpfpm-status?full должно быть возможно узнать, что происходит. (В качестве примечания по безопасности: никогда не следует оставлять такие страницы статуса общедоступными.)
Определить правильный процесс 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
Вам следует использовать медленный журнал PHP-FPM:
Установка request_slowlog_timeout
, а также slowlog
- см. документацию по конфигурации php-fpm - должна предоставить вам трассировку стека всех длительно выполняющихся процессов php-fpm; включая их PID.