You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

大量PHP进程致CPU占用过高,如何排查问题关联脚本?

定位CPanel下lsphp进程对应的问题脚本方法

因为你的GoDaddy CPanel没有终端权限,只能通过PHP代码或CPanel自带工具排查,以下是具体可行的方法:

1. 用PHP执行更详细的进程查询命令

原来的ps aux | grep php只能看到基础进程信息,改用带完整参数的命令,能获取进程启动时的脚本路径:

exec('ps auxfww | grep lsphp', $output);
print_r($output);
  • fww参数会显示完整的命令行参数(包括脚本路径)和进程树结构,能看到父进程与子进程的关联,方便对应到具体的cron任务。
  • 输出里的CMD列会显示lsphp启动的具体PHP脚本路径,比如lsphp /home/youruser/public_html/subdomain/cron.php,直接定位问题脚本。

2. 查看单个进程的详细资源与文件关联

针对可疑的PID(比如你提供的809796),用lsof命令查看进程打开的文件、网络连接等信息:

$target_pid = 809796; // 替换成你要排查的进程PID
exec("lsof -p $target_pid", $output);
print_r($output);
  • 输出里会包含进程正在读写的文件路径(比如运行的PHP脚本、日志文件),还有网络连接的目标地址(对应爬取任务的站点),能快速锁定是哪个子域名的爬取脚本。

3. 利用CPanel自带的监控与日志工具

  • Cron任务日志:在CPanel的「Cron Jobs」模块中,部分主机商会提供执行日志;也可以通过文件管理器尝试访问/var/log/cron(若有权限),日志里会记录每个cron任务的执行时间、用户和脚本路径,结合进程的STIME字段(比如你提供的07:44),匹配对应的任务。
  • 资源监控模块:打开CPanel的「Resource Usage」或「Metrics」页面,里面会展示实时进程列表,部分主机的CPanel会直接标注进程对应的脚本路径和所属子域名,无需自行执行命令。

4. 给cron脚本添加启动日志

临时修改所有子域名的cron脚本,添加PID和启动记录:

// 放在脚本最开头,日志路径请改为你有权限写入的位置
$log_path = '/home/youruser/cron_debug.log';
$log_content = date('Y-m-d H:i:s') . " | 脚本路径: " . __FILE__ . " | PID: " . getmypid() . "\n";
file_put_contents($log_path, $log_content, FILE_APPEND);

当进程堆积时,通过异常PID就能在日志里找到对应的脚本文件,同时也能排查脚本是否未正常退出导致进程残留。

内容的提问来源于stack exchange,提问作者Cody_T

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 10:35:04