我如何才能准确找到哪些 PHP 脚本占用了所有服务器资源?

我如何才能准确找到哪些 PHP 脚本占用了所有服务器资源?

如果网络服务器运行缓慢,有没有办法查看是哪些文件导致了这个问题?

編輯:

带有 Apache2 Web 服务器的 Debian 操作系统

答案1

答案2

如果您试图找出哪个用户的脚本正在消耗您的资源,您可以使用 apache itk mpm,它在您选择的用户/组下运行 vhost。每个请求都会派生一个以该用户身份运行的 apache 进程。因此,ps/top 输出将显示哪个用户正在运行脚本(以及哪个 vhost)- 缺点是 itk 当然要慢得多。- 由于使用正常的 prefork 或 worker mpm,apache 在一个进程中处理多个请求以提高性能,因此很难判断哪些请求正在消耗您的 mojo。

如果您想要确切地找出 php 应用程序中的哪些函数正在消耗您的资源,那么您必须使用 xdebug。显然,xdebug 分析方法只是针对一个 php 应用程序的一次性检查,而不是找出共享托管环境中属于哪个用户的哪个脚本正在消耗 CPU 时间的解决方案。

答案3

缺少一些有用的信息:

  1. 操作系统?
  2. http 守护进程?

编辑:您是否检查过 Linux 机器上正常进程查找工具,例如 top、iostat、fuser、lsof?

答案4

我做了一件事,这有点低效,但我每分钟运行一次 cron 作业,它使用 curl 将输出保存http://localhost/server-status到以日期和时间为文件名的文件中。这样我就可以在 Web 浏览器中打开这些文件,并查看当时正在访问哪些 URL。比较这些文件的数量可以显示哪些脚本使用了最多的资源。但这不是很准确,只是一种快速而粗略的方法来查看发生了什么。

为了准确表示,请按照其他人的建议使用分析器。

如果您想查看 cron 作业,请告诉我。

相关内容