遇到甲骨文云实例频繁重启,优先通过控制台查看实例状态历史记录和系统日志,确认是资源不足触发保护还是底层宿主机维护。
先说结论:大部分频繁重启源于内存溢出或 CPU 资源争抢,先排查系统日志再调整资源配置。
- 先确认:实例控制台是否有维护通知或资源告警
- 先处理:清理内存占用或调整实例形状
- 再验证:观察重启间隔是否拉长或消失
快速诊断命令
通过 SSH 登录实例,执行以下命令快速定位重启原因:
# 查看系统重启历史记录
last -x | head
# 查看内核日志是否有 OOM 关键字
dmesg -T | grep -i "out of memory"
# 查看当前运行时间
uptime
# 查看内存使用详情
free -h
如果已配置 OCI CLI,也可在本地查询实例状态:
oci compute instance get `--instance-id` <instance_ocid>
核心原因分析
实例重启通常集中在资源超限和底层维护两方面。内存不足时,Linux 内核会触发 OOM Killer 杀死进程,严重时会导致系统不稳定甚至重启。CPU 资源如果被长期占满,尤其是免费层实例,可能会触发云平台的风控保护机制。此外,甲骨文云底层宿主机有时需要进行硬件维护或迁移,这也会导致实例意外重启。
实操:如何安全增加 Swap 分区
如果物理内存长期处于耗尽状态,建议增加 Swap 分区缓解压力。以下是创建 2G Swap 文件的具体步骤:
# 创建 swap 文件
dd if=/dev/zero of=/swapfile bs=1M count=2048
# 设置权限
chmod 600 /swapfile
# 格式化 swap
mkswap /swapfile
# 启用 swap
swapon /swapfile
# 写入 fstab 确保开机生效
echo '/swapfile none swap sw 0 0' | tee -a /etc/fstab
注意:Swap 性能低于物理内存,仅作为应急缓冲,不可长期依赖。
控制台操作与风险规避
如果怀疑是宿主机问题,可以在控制台尝试“停止”再“启动”实例,这有时会将实例迁移到健康的宿主机上。
重要风险提示:
- 备份数据:停止实例前务必创建手动备份或快照,防止数据丢失。
- 公网 IP 保留:确认实例使用的是静态公网 IP 还是 ephemeral IP。如果是临时 IP,停止实例后可能会释放,导致无法连接。建议在 networking 中预留 IP 并关联。
- 控制台访问:确保拥有 VNC 控制台访问权限,防止网络配置错误导致 SSH 无法连接。
Oracle 控制台监控指标详解
在实例详情页的“监控”选项卡中,重点关注以下指标:
- CPU 利用率:如果持续超过 90% 且伴随重启,需优化进程或升级配置。
- 内存利用率:需安装 Oracle Cloud Agent 才能看到此指标。若持续接近 100%,极易触发 OOM。
- 状态检查失败:如果显示“Status Check Failed”,通常意味着底层硬件或网络问题。
怎么验证是否生效
执行 uptime 命令,观察运行时间是否持续增长。回到控制台监控图表,查看 CPU 和内存曲线是否平稳,没有周期性归零或断崖式下跌。连续观察 24 小时以上,确认没有新的非预期重启记录。
常见坑
不要忽略账单状态,欠费停机后恢复有时会导致网络配置异常。不要过度依赖 Swap 作为长期解决方案,磁盘 IO 延迟可能拖慢服务。修改网络配置前务必保留控制台访问权限,防止配置错误导致无法 SSH 连接。