我们一直在使用NGINX和php-fpm。
我们已经注意到一些请求通过最高命令挂了很长时间(10+,20+分钟…)。
此外,在访问日志条目(NGINX)中检测到一些可疑请求(我的意思是机器人),但是我不确定这些可疑请求是否与这些请求挂起或不存在有关。
所以我的主要问题是:
是否有可能(通过configuration或其他)将php-fpm PID关联到访问日志中的URL条目?
还是有什么工具可以帮助我完成这个任务?
附加信息:
我们有源代码,因为我们是主要的开发者。
提前致谢!
从nginx端识别正确的php-fpm进程是有问题的,因为你基本上是通过unix套接字或tcp套接字与黑盒进行通信的,更不用说线程了。
你可能会从PHP方面攻击这个问题。 你可以在你的php脚本中使用getmypid(),或者如果这不是你的代码,你可以在php fpm config中使用php_value auto_prepend_file选项。 这样,您可以在每个php文件的开始处插入自己的代码,并根据需要将相应的REIDEST_URI和pid一起logging下来。 你有想要的连接。 准备在一个繁忙的网站大iops虽然…
如果您只需要该pid,那么启用php-status可能会更容易,请参阅https://easyengine.io/tutorials/php/fpm-status-page/并检查您的服务器/ php-status?是否已满
如果您启用了php-fpm状态页面,则可以考虑检查完整模式以跟踪pid。 例如,使用http://example.com/phpfpm-status?full可以找出发生的事情。 (作为一个安全相关的说明:不应该公开访问这些状态页面。)
您应该使用PHP-FPM的慢日志:设置request_slowlog_timeout以及slowlog – 请参阅php-fpmconfiguration文档 – 应该为您提供所有长时间运行的php-fpm进程的堆栈跟踪; 包括他们的PID。