性能问答>Dubbo微服务集群固定机器固定时间段CPU打高>
6回复
1年前

Dubbo微服务集群固定机器固定时间段CPU打高



PerfMa各位专家好,我们公司内部发现一台机器固定时间段CPU打高的问题苦查几天无果,因此麻烦各位专家帮忙在百忙之中抽空看下,非常感谢。

现象:现在发现生产dubbo微服务集群一台固定机器在固定时间20:00-22:00段CPU持续打高,但是又不会导致机器服务挂掉。

OS:Linux CNSZXXPLXXXX 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

256G Memory
48 Intel® Xeon® CPU E5-2650 v4 @ 2.20GHz

image.png

service_491538.jstackservice_495845.jstack

image.png

JVM 调优参数:-server -Xmx60g -Xms60g -XX:+UseG1GC -XX:MaxGCPauseMillis=1200 -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=512m -XX:+DisableExplicitGC -XX:LargePageSizeInBytes=128m -XX:G1HeapRegionSize=32m -XX:+PrintGCDetails -XX:+PrintGCDateStamps -verbose:gc -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=$LOGS_DIR/dump -Xloggc:$LOGS_DIR/gc.log

GC 日志如下
gc.zip

3174 阅读
请先登录,再评论

粗看了下,dubbo线程池满了,应该是你调用了某个服务提供方的接口,高峰期它处理慢了,导致你的应用dubbo线程池慢了,先定位是调用的哪个服务。

这把锁也怪怪的
image.png

image.png

1年前
回复 童晨曦:

有点感觉像dubbo内部的已经达到最大的可用线程了,然后在等待可用线程?

1年前回复
回复 童晨曦:

你的日志里没相关的内容呢

1年前回复
回复 spy:

非常感谢抽空帮忙查看这个问题,这个确实是在高峰期间出现CPU打高。看jstack确实是handler线程池全部在等待tid 0x00007f4654e7aa50,请问下有什么方式可以追踪到tid的线程代码块呢,再次感谢啊

1年前回复

可以参考这篇文章如何定位消耗CPU最多的线程

1年前
回复 大空翼:

你好;你说的这种情况我们也考虑过了,我们分析过Top的线程,发现都是正常的调用,使用arthas分析,发现调用链路和耗时都很正常,而且只有一台机器CPU打高,因此比较怀疑是不是系统软硬件方面有问题呢

1年前回复