如何确认 Apache 中正在运行哪个 PHP 文件?

如何确认 Apache 中正在运行哪个 PHP 文件?

我遇到了由于我的网站而导致 VPS CPU 耗尽的情况。如何确认 Apache 正在运行哪个 PHP 文件?这样我就可以解决这个问题。

lsof -p我尝试了、、、命令,但没有人帮助我ps -fstrace -p因为出来的都是 apache 文件,例如/usr/local/zend/apache2/bin/httpd/usr/local/zend/apache2/modules/mod_unique_id.so

在此处输入图片描述

在此处输入图片描述

答案1

仅在必要时使用sudo。列出所有进程,然后指示grep仅输出包含单词 的行php

sudo ps aux | grep php

按照以下标题阅读输出

USER       PID  %CPU %MEM  VSZ RSS     TTY   STAT START   TIME COMMAND

答案2

如果您尝试获取正在运行的 Apache PHP 模块的完整路径,请执行此操作。

Apache 使用的 PHP 文件应命名为libphp5.so。因此,您可以lsof通过以下方式运行此命令sudo

sudo lsof | grep libphp5.so

这将返回一大堆结果,其中几乎所有结果都显示完整路径,libphp5.so如果你使用的是 Ubuntu/Debian 系统,则应该是这样的:

/usr/lib/apache2/modules/libphp5.so

如果您尝试监视您的 Apache 服务器以查明哪个文件可能正在阻塞它,请执行此操作。

话虽如此,从你的问题中我不清楚你所说的“如何确认哪个 PHP 文件在 Apache 中运行?”是什么意思,因为重读它让我想到也许你正在试图找出哪个 PHP 脚本阻塞了你的服务器,而不是 Apache 正在加载哪个 PHP 模块?因为 Apache 实际加载的 PHP 模块只是 Apache 使用的 PHP 解析器。但你通过该设置运行的 PHP 脚本是完全不同的东西。

问题在于 Apache 的工作方式是按需解析内容/文件。因此,您需要运行一个可以实时监控 Apache 请求的工具,以获取您正在寻找的信息。您可以通过几种方式从命令行执行此操作。

使用 Apache Top 监控 Apache Web 服务器。

首先,您可以安装并运行Apache 顶部类似于标准 Linux/Unixtop但对于 Apache 进程来说。例如,这里有一个使用 Apache Top 实时监控 Web 服务器日志文件的简单方法:

apachetop -r 2 -f /var/log/apache2/access.log

-r 2每 2 秒刷新一次输出,并-f /var/log/apache2/access.log告知apache-top报告提供的 Apache 日志中的信息。在该示例中,它从 Ubuntu/Debian 设置中加载默认的 Apache 日志文件,但您应该更改该完整文件路径以匹配您的实际 Apache 日志文件位置。

使用 ELinks 监控 Apache Web 服务器。

我用来监控服务器上的 Apache 的另一种方法是使用电子链接默认的 Apache 状态 URL 如下:

elinks http://localhost/server-status?refresh=1

ELinks 基本上只是一个基于文本的 Web 浏览器。因此,如果您从命令行运行它,它只会加载传递给它的 URL,如果您注意到 URL 包含参数,该refresh=1参数基本上只是告诉它server-status每秒刷新一次。

相关内容