在我的 48 台服务器中,有一台消费者的速度始终比所有其他消费者慢。
它运行相同的代码,我甚至手动让它处理相同的流量,但我发现它比所有其他消费者都慢,
我们怀疑存在硬件问题或 CPU 窃取(因为它总是使用 100% 的 CPU,而其他的在流量相同的情况下只使用 50%)
有什么方法可以确认没有发生 CPU 窃取事件?
以下是 top 的一些输出
top - 20:38:28 up 10 days, 1:57, 2 users, load average: 31.38, 24.56, 28.36
Tasks: 443 total, 1 running, 442 sleeping, 0 stopped, 0 zombie
%Cpu(s): 90.5 us, 4.0 sy, 0.0 ni, 4.6 id, 0.1 wa, 0.0 hi, 0.8 si, 0.0 st
KiB Mem: 30871552 total, 17587808 used, 13283744 free, 286512 . buffers
KiB Swap: 0 total, 0 used, 0 free. 11353472 cached Mem
答案1
您可能可以通过执行涉及实例更改的操作来更改实例的硬件(例如,更改实例类型或部署新机器)。如果您停止并启动实例,则有很小的机会使用相同的硬件(但很简单,可以作为一个很好的测试)。
如果您怀疑问题可能出在 CPU 窃取上,您可以使用 iostat 命令的输出主动监视此参数。
请检查,如果您使用的是 t2 类型实例,则 CPU 信用指标将通过 cloudwatch 进行。