近期用户的生产环境下遇到一个很神奇的问题,并发数起来( 7 个 pod ,1000 并发)访问就会很慢,同一个接口有时候 300 多 ms ,有时候七八秒,数据库(华为 GaussDB ,基于 PG )。
用 arthas 跟了一下,发现慢在 org.postgresql.core.PGStream.receiveChar()
,即使是一条简单的select 'x'
有时候都能执行一两秒。
数据库那边反馈是 SQL 执行都很快,网络也排查过没问题(华为驻场工程师排查)。
然后从psjdbc
项目找到下面这个 issue
里面有人提到 JDK-8075484
和我们遇到的问题比较能对上,jstack 看到了最终都是卡在at java.net.SocketInputStream.socketRead0
但是网上查到的关于 jdk 这个 bug 说的都是直接卡,我们遇到的情况是偶尔慢,但不会卡住不返回
找了一天多了没有其他思路来排查这个问题了,想请教以下两个问题:
JDK-8075484 这个 bug 是否有老哥遇到过是慢而不是卡住?
各位老哥有什么思路可以继续排查吗?
系统:华为欧拉 CPU:32 核 aarch64 ,生产环境 CPU 压力很小 内存:64G 网络:万兆
压测时 vmstat 可以看到 in 和 cs 都在 4w~6w ,pidstat 可以看到都是我们的服务线程产生的
因为客户的生产环境用的华为平台,我们是上传 jar 吧,平台自动成容器镜像运行,华为的驻场工程师明确说了改不到 jdk 的版本。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.