我有一台 Debian 服务器(Amazon AWS),其中有一个 PHP Web 应用程序,可供数百名用户使用。
我的 CPU 使用率几乎总是低于 10%。今天凌晨 12:00 左右,我的 CPU 使用率出现了两次疯狂的飙升,达到 100%,持续了整整 1 分钟,然后又恢复正常。
我试图弄清楚究竟是什么导致了这种情况的发生,也许是用户正在运行需要修复的脚本。
我如何找出此时我的 CPU 上发生了什么,哪些命令正在运行等等?
答案1
进行此类调查的最佳工具是“sar”。
“sar” 是一个 Linux 内置命令,它会持续收集所有性能数据、存储它们,并允许进行历史分析来识别瓶颈。
如果我没记错的话它默认是禁用的,您需要启用它并启用一个 cron 作业,它将在您的系统中运行并收集事件。
因此基本上需要做的就是启用 sar,让它运行几天,下次您捕获到这个 CPU 峰值时,只需浏览 sar 的日志文件并查找在特定时间内系统中发生的情况。
这是一个很好的关于“sar”的资源。
答案2
尝试一些 CPU 监控工具并运行一段时间并检查日志...如果您正在使用 WordPress 或任何类型的 CMS 工具,请尝试禁用插件并检查。
答案3
尝试 New Relic APM。它非常适合监控 Web 应用
答案4
这里有几点需要注意
- 您的网站可能会同时受到许多人/IP 的访问
- 您的代码/脚本可能占用过多空间或者可能存在未结束的循环
为了解决这个问题,你宁愿利用服务器的多个核心/线程,尝试优化你的代码
记下时间后,检查日志以检查当时运行了哪个特定脚本