查找调用进程的文件/脚本

查找调用进程的文件/脚本

我确实有一个 CPU 利用率很高的 PhP 进程。该进程反过来似乎调用了 mysql,并且两个进程一起使用了所有 CPU 核心和 RAM

使用 ps aux | grep php ,我可以获得文件名和位置。即;
/usr/bin/php /path/to/index/file/index.php

我无法删除 index.php,因为运行网站需要此文件。
我尝试将 index.php 更改为 home.php,并对 website/htaccess 进行了相应的更改。

此后我得到
/usr/bin/php home.php 用于 ps aux | grep php

似乎已经编写了一些脚本来访问网站的索引文件,但我无法找到它是哪个脚本。

我使用 sudo find . | xargs grep '/usr/bin/php' 搜索了整个机器,但还没有运气。

所以我的问题是如何找到正在执行'/usr/bin/php index.php'的脚本(如果是这种情况)
我非常感激对此的任何意见。

答案1

如果文件是 index.php,并且是网站不可或缺的一部分,那么有理由认为,如果有脚本访问它,那么它既可能是服务器外部的,也可能是内部的。为什么不查看一下您的访问日志呢,因为发送到服务器的任何请求都应该被记录下来,包括 IP,理论上应该有一些关于进行访问的程序类型的信息(尽管这很容易被欺骗)。

答案2

通常,性能问题太复杂,无法在这里解决。然而,您的设置中有一个明显的 WTF:

ps aux | grep php,我可以获得文件名和位置。即; /usr/bin/php /path/to/index/file/index.php

你是真的运行 CGI PHP?

sudo 查找 . | xargs grep'/usr/bin/php'

我强烈建议您向了解 Unix 系统和特别是 Web 服务器如何工作的人寻求帮助。

答案3

感谢 NickW 和 symcbean 。你们的回复很有用。

以下是问题概述。该网站使用 Yii 框架实现,因此每个请求都会经过网站的 index.php。

该网站有许多页面(100k 中有 1000 个)的 SQL 查询速度非常慢且错误。每当搜索机器人访问服务器并请求此类页面时,它都会执行 30 秒(php 默认超时),然后导致出现错误页面。机器人将再次访问同一页面或其他此类页面。

这就是 PhP 和 Mysql 进程 CPU 利用率高的原因。

相关内容