正常系统应该不会这么频繁吧。主要是有个接口,需要上报一些 id 信息,偶发性接口时延大于 500ms ,平常应该是 3ms 左右。这个 ygc 会影响到接口么
1
churchmice 2023-01-10 23:09:14 +08:00 via Android 5
谜语人*出哥谭
|
2
rekulas 2023-01-10 23:09:41 +08:00
并发高不高 高的话需要考虑下是不是 gc 导致的
|
3
learningman 2023-01-10 23:11:09 +08:00 via Android
@churchmice ygc, young generation garbage collection
|
4
luxinfl OP @churchmice 我寻思做 java 的应该都懂
|
5
luxinfl OP @rekulas 并发比较高的,能有 3000qps 的样子,所以我怀疑是 ygc 次数太多的问题。。但是想不通为啥 ygc 的那一点停顿会偶然导致时延高了这么多
|
6
acerphoenix 2023-01-11 09:21:05 +08:00
我堕落了。
|
7
whatevers 2023-01-11 09:46:28 +08:00
jstat 看下实时 gc 状态呢
|
8
zilonglym 2023-01-11 13:04:02 +08:00
3000qps, 是单台节点?按照 200 线程算,每秒 15 个,67ms 一个,一秒一次停顿 15ms 这么算挺大的了
|
9
luxinfl OP @zilonglym 只能先看看调大一点 eden 区了,都是些用完就销毁的对象。。大一点 eden 能保证 ygc 三四秒一次,停顿时间感觉也大差不差。
|
10
Red998 2023-01-11 18:07:52 +08:00
接口超时 有可能是代码问题。比如请求了别的服务、事务等待、有什么耗时操作 之类的
|
11
Red998 2023-01-11 18:11:18 +08:00
频繁 gc 肯定代码中有什么大的对象 一直 GC 不掉。可以参考: https://heapdump.cn/article/1661497
|
12
sadfQED2 2023-01-11 19:51:11 +08:00 via Android
好歹你把机器硬件配置,jvm gc 配置,代码逻辑贴上来吧。你这么问鬼知道哪里的问题啊
|