同业务内,某实例CPU异常高

问题的现象:同业务有多个k8s实例,在QPS相同的情况下,某个实例的CPU使用率是其它实例的两倍。

1 CPU性能指标

QPS、CPU使用率体现到CPU上是IPS、IPC,通常这两个指标可以指引后续的排查。

实例 IPS IPC
正常 7,823,662,928 1.18
异常 17,944,647,861 1.12
  1. 正常、异常实例的IPC相差不大,但是IPS差了1倍,和CPU使用率的差异吻合;
  2. QPS相同,但是IPS不同,说明实例的很多指令在做QPS无关的事情。

2 IPS 差异

可以从IPS的差异入手,参考之前的:

最简单的方法,是看TOP线程的情况。我司的代码,会根据线程的功能,命名线程。(C语言可以使用 pthread_setname_np ,Java语言也有相关API。)

top -H -p <pid> 发现如下差异:

  1. 异常实例有很多的rdk线程,有40多个 ps -L -p <pid> | wc -l ;
  2. 正常实例则没有rdk线程。

业务同学根据这个差异,很快定位到是配置错误。修改之后各个实例的CPU使用率均衡了。

Author: zhengzhiyong

Created: 2023-10-22 日 12:29

Validate