遇到甲骨文云实例 CPU 占用过高,建议先通过控制台监控区分是实例整体瓶颈还是系统内特定进程异常,再登录系统针对性排查。
先说结论:高 CPU 通常由异常进程、业务高峰或实例规格不足引起,需结合控制台指标与系统内部命令综合判断。
- 先定位:确认是单核满载还是多核平均高,区分用户态与内核态
- 先做:排查异常进程或临时扩容,避免直接重启丢失现场;SSH 不通时优先使用 VNC 控制台
- 再验证:观察业务响应速度与控制台 CPU 指标是否回落
命令速用版
# 查看整体 CPU 负载与进程线程
top -H
# 查看具体进程 CPU 占用排序(修正语法)
ps aux `--sort`=-%cpu | head -n 10
# 查看 CPU 每核使用情况
mpstat -P ALL 1
# 查看进程级别 CPU 统计(需安装 sysstat)
pidstat -p <pid> 1
# 安装监控工具 (Oracle Linux/CentOS)
sudo yum install -y sysstat
# 安装监控工具 (Ubuntu/Debian)
sudo apt update && sudo apt install -y sysstat为什么会这样
甲骨文云实例的 CPU 性能与选择的实例形状(Shape)直接相关。部分免费或低成本实例(如 E2.1.Micro)采用突发型配置,长时间高负载可能导致性能受限(Throttling)。此外,系统内部的异常进程(如挖矿脚本、死循环代码)或配置不当的服务也会占满 OCPU 资源。
分步处理
1. 查看控制台监控
登录甲骨文云控制台,进入实例详情页的“监控”标签。观察 CPU 利用率曲线是持续高位还是间歇峰值。如果控制台显示 CPU 低但系统内卡顿,可能是 IO 等待过高。
2. 登录系统排查(含应急方案)
优先尝试 SSH 登录实例。若因 CPU 过高导致 SSH 连接超时或拒绝,请立即通过控制台使用 VNC 连接:
1. 进入实例详情页,点击左侧“资源”下的“控制台连接”。
2. 创建或启用 VNC 控制台连接,点击“启动 VNC 会话”。
3. 在浏览器中输入提供的 VNC 密码登录系统。
3. 分析进程性质
使用 top 命令,按 P 键按 CPU 排序。记录占用最高的进程 PID 和命令名。
如果是已知业务进程(如 Java、Nginx),考虑业务量是否突增。如果是未知进程(如随机字符串名、异常路径),可能是安全事件。
4. 采取处理措施
对于异常进程,建议先尝试 kill -15 <pid> 正常终止,给予进程清理资源的机会。若无效再使用 kill -9 <pid> 强制终止。对于业务高峰,可考虑垂直扩容实例形状或优化代码逻辑。警告:不要随意杀死系统关键进程(如 systemd、sshd),否则可能导致实例失联。
怎么验证是否生效
处理后再次运行 top 确认目标进程 CPU 占用是否下降。观察控制台监控图表,CPU 利用率曲线应随操作回落。同时测试业务接口响应时间,确认卡顿现象消失。
常见坑
1. 忽略 IO 等待:top 中 wa 值过高表示磁盘 IO 瓶颈,此时 CPU 占用高可能是假象,重点应排查磁盘性能。
2. 误杀关键进程:排查时注意区分系统守护进程与用户进程,避免导致实例失联。
3. 突发实例限制:免费层实例 CPU 资源有限,长期高负载会被限制性能,并非系统故障,需调整预期或升级规格。
4. SSH 超时盲区:高负载时 SSH 服务可能无响应,不要反复重试导致锁死,应及时切换 VNC 控制台。
参考来源
- Oracle Help Center, "Compute Instance Overview", https://docs.oracle.com/en-us/iaas/Content/Compute/Concepts/computeoverview.htm
- Oracle Help Center, "Monitoring Compute Instances", https://docs.oracle.com/en-us/iaas/Content/Compute/Tasks/monitoringinstances.htm