PhantomJS非常棒, 我在与AWS托管的SEO Analyzer网站工具箱中使用。
发布后的几天, 我经历了一些指标, 发现CPU利用率一直很高。
花了几分钟后, 我意识到这是” phantom/lib/shim.js”进程正在占用我的CPU。我重新启动了节点应用程序, CPU正常。
root 2317 1 5 Oct30 ? 04:40:56 /apps/tools/TWC/1.0/node_modules/phantomjs-prebuilt/lib/phantom/bin/phantomjs /apps/tools/TWC/1.0/node_modules/phantom/lib/shim.js
root 2857 1 2 Oct30 ? 01:37:47 /apps/tools/TWC/1.0/node_modules/phantomjs-prebuilt/lib/phantom/bin/phantomjs /apps/tools/TWC/1.0/node_modules/phantom/lib/shim.js
我与开发人员交谈, 然后猜测是什么。他要几百美元修理它。我不愿意花钱去解决这个问题, 所以我开始了自己的调查。
我注意到, shim.js是由应用程序按需打开的, 由于某种原因, 它没有被关闭(可能是错误的代码?)。我尝试手动终止该进程, 并且CPU正常, 并且不影响应用程序功能。
我实施了变通办法, 并想与你分享, 以便你可以利用它。
这假设你托管在基于Linux的操作系统(例如CentOS或Ubuntu)上。
使用以下命令创建一个shell脚本(将其命名为killphantom.sh)
/bin/bash
if [[ "$(uname)" = "Linux" ]];then killall --older-than 1h phantomjs;fi
保存文件并将权限更改为可执行
chmod 755 killphantom.sh
注意:在以上脚本中, 我正在杀死运行时间超过一小时的phantomjs进程。你可以根据需要调整1小时。
手动执行脚本以确保其正常工作。
./killphantom.sh
现在, 是时候将脚本放入crontab中, 以便使其定期执行并保持CPU使用率。
要创建crontab, 请使用crontab -e命令
crontab -e
添加以下内容并保存以安装cron
*/15 * * * * /yourscript/path/killphantom.sh >/dev/null 2>&1
上面的示例是每15分钟运行一次crontab。
要进行验证, 请使用crontab -l, 它应该显示脚本。
搞定。 Crontab将每15分钟执行一次脚本并杀死phantomjs。
我知道这是肮脏的解决方案, 但可以完成工作。我希望这对你有用。
评论前必须登录!
注册