背景:我有一个由 3 个 Linux VM 组成的集群。它们运行相同的配置,并通过 Google 的网络负载平衡器进行负载平衡。
最近,我注意到其中一台机器的负载始终明显高于其他机器。不是 CPU 峰值,只是平均负载始终是 2 到 3 倍。
对服务器的审计未发现任何 rootkit 或恶意软件。进程列表几乎相同。所有机器的内存使用率都很正常。没有过多的交换。对磁盘的写入都是正常的。
通过查看 SQL 数字,可以发现这些机器似乎在过去 2 周内处理的流量在 0.1% 以内。
通过查看累计 CPU 时间(通过 top),我发现这台机器上的 mysql 进程以及其他长时间运行的进程似乎比其他两台机器(2 周前在一小时内重新启动)多消耗了大约 70% 的 CPU 时间。这肯定是在 3 天内发生的,因为 CPU 图表显示这台机器的使用率比其他机器高。
此外,我通过错误日志注意到此服务器的连接数似乎出现了激增。这种情况只发生过一次,但那大概就是 CPU 问题开始出现的时候。
就目前而言,通过云控制台关闭服务器几分钟似乎已经解决了这个问题。
我目前的假设是,连接峰值是由于实时迁移导致的电压降低而发生的,并且 CPU 使用率更高是因为新的虚拟机管理程序的配置不同 - 很可能是由于英特尔前瞻漏洞的修补程序。
有人能指出我一个显示服务器迁移的日志吗,以便我可以确认或排除这个假设的实时迁移部分?
如果有任何其他想法我将不胜感激。
答案1
您可以从虚拟机查询元数据服务器,以检查实时迁移是否即将发生并提前获得通知(事件发生前 60 秒)。
您应该查询该maintenance-event
属性来了解实时迁移何时发生。
这一页有关于如何查询此属性的说明以及一个示例 Python 脚本,您可以根据该脚本在迁移时采取一些措施。