我们遇到了一个有趣的难题,希望您能帮我们解决问题。我们有一个包含多个进程的服务。为了分配负载,我们可以启动大多数类型的 n 个进程。例如,如果我们预计有 200,000 个连接,并且知道某个进程类型中的每一个在达到 100% CPU 之前可以处理大约 5,000 个连接,那么我们知道应该至少运行 40 个这样的进程类型来处理负载。
最近,我们开始整合我们的服务,以便更好地利用硬件。但在负载测试期间,我们发现,除了单个机器上某种进程类型的数量外,不做任何改变,每个进程的 CPU% 都会翻倍。
以下是该进程 CPU% 的截图:
以下是主机 CPU% 的截图:
之前的测试中大约有 12 个此过程实例;之后的测试将数量翻了一番。我认为如果盒子无法处理负载,那么这种情况是有道理的,但从我看到的情况来看,情况并非如此。
top - 14:55:08 up 54 days, 18:30, 1 user, load average: 22.26, 22.39, 22.03
Tasks: 581 total, 1 running, 580 sleeping, 0 stopped, 0 zombie
%Cpu(s): 32.8 us, 3.1 sy, 0.0 ni, 62.3 id, 0.0 wa, 0.0 hi, 1.7 si, 0.0 st
KiB Mem : 26385841+total, 16612808+free, 20537016 used, 77193320 buff/cache
KiB Swap: 4194300 total, 4194300 free, 0 used. 24167782+avail Mem
平均负载在范围内(这是一台 28 核服务器,256GB 内存)。磁盘 I/O 为wa
。0.0
我不确定是什么导致 CPU% 增加。还有什么想法可以寻找吗?如果 CPU(根据 top)实际上是在下面利用了?