我有一个在计算引擎 f1-micro 实例上运行的 ubuntu 14.04。每隔几周,服务器就会因为 IO 读取激增而挂起。
当这种情况发生时,我无法使用 SSH 进行连接。
该服务器过去每天都会在特定时间挂起,我发现这是 apt 的自动更新。
现在自动更新配置是:
$/etc/apt/apt.conf.d# cat 10periodic
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "0";
APT::Periodic::AutocleanInterval "1";
$/etc/apt/apt.conf.d# cat 20auto-upgrades
APT::Periodic::Update-Package-Lists "0";
APT::Periodic::Unattended-Upgrade "0";
有没有什么办法可以监控并检测导致 IO 爆发的原因,即使 SSH 无法连接?
答案1
Cloud Console 为 GCE 实例提供基本的 IO 监控(您已经在屏幕截图中看到了它)。但是,也可以通过使用Stackdriver 监控代理这是计算机中的一个进程,它收集不同的指标并将它们发送到Stackdriver 监控。
这种方法的另一个优点是,它可以与Stackdriver 警报让您知道某个指标何时出现问题。但是,一个缺点可能是代理在系统中收集指标的资源开销,特别是考虑到机器大小。
或者,您可以使用Sysstats 套件sar
通过(及相关方式)使用简单的 CronJob来收集机器内的指标。
唯一的缺点是,度量信息默认保存在同一台机器上,所以它可能更像是死后数据比预防数据。
最后,没有说明您的机器上正在运行什么,但如果可能的话,您不妨考虑另一种机器尺寸,以使您的工作负载不那么受到资源限制。