Closed Aresxue closed 1 year ago
问题收到。
TtlExtensionTransformletManager
是 v2.13.0-Beta1
这个测试版本的内容,还在实现中。
https://github.com/alibaba/transmittable-thread-local/releases/tag/v2.13.0-Beta1
请使用正式版本:如 v2.12.6
,尤其是在线上环境。 @Aresxue
https://github.com/alibaba/transmittable-thread-local/releases/tag/v2.12.6
对于v2.13.0-Beta1
版本才有的功能,你有什么需求? @Aresxue
在流量高峰时, 大量的
sun.reflect.DelegatingClassLoader
实例涌入, 因为流量较大内存较小流量刚接进来时即发生了gc
。因为
gc
会把对象给清理掉,然后get
方法内的while
循环一直找不到eq
的对象,循环出不来, 最终形成了死循环逐渐耗尽CPU
。
有问题分析 👍 @Aresxue
问题收到。
TtlExtensionTransformletManager
是v2.13.0-Beta1
这个测试版本的内容,还在实现中。 https://github.com/alibaba/transmittable-thread-local/releases/tag/v2.13.0-Beta1使用正式版本:如
v2.12.6
,尤其线上环境。 @Aresxue https://github.com/alibaba/transmittable-thread-local/releases/tag/v2.12.6对于
v2.13.0-Beta1
版本才有的功能,你有什么需求? @Aresxue
没有高级功能的需求,这边后续会回退到v2.12.6
妹子挺美的
fixed by 0ec1ea1b187e4531866f466e0d99cfede3650dee
应用接口使用了
jackson
的ObjectMapper
,其内部序列化使用了反射机制:反射时
jvm
会创建sun.reflect.DelegatingClassLoader
。在流量高峰时,
大量的
sun.reflect.DelegatingClassLoader
实例涌入, 因为流量较大内存较小流量刚接进来时即发生了gc
。因为
gc
会把对象给清理掉,然后get
方法内的while
循环一直找不到eq
的对象,循环出不来, 最终形成了死循环逐渐耗尽CPU
。现场最后形成这样的堆栈信息: