1

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

 9 months ago
source link: https://zzyongx.github.io/blogs/one-instance-cpu-is-higher-than-other.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

同业务内,某实例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使用率均衡了。


Recommend

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK