Meituan-Dianping/Logan

【Logan Server】LoganProtocol代码中的ZipInputStream未释放导致的堆外内存溢出

Closed this issue · 4 comments

服务器配置如下
Pod配置:3G 1C
Java容器配置:2800M 1C
JVM配置:最大堆=最小堆=750M

目前运行了一段时间的logan发现以下现象
Java容器发生OOM,但是JVM内存正常

Java容器内存变化监控
image
JVM内存变化监控
image
image

可以从上图发现 JVM各个内存区域变化正常,并且JVM各个内存区域内存相加 远远小于 Java容器内存

推测疑似发生JNI内存溢出问题,经过排查后发现,可能由于LoganProtocol类中ZipInputStream未释放导致
image

具体原因可见
https://stackoverflow.com/questions/13559258/strange-java-lang-outofmemoryerror-from-java-util-zip-inflater-initnative-metho
https://bugs.java.com/bugdatabase/view_bug?bug_id=4797189

有fix办法吗,pr一波?

可以的. 我这几天忙完了提交~

请问下, 这样的配置, 是基于每天多大的日志量, 保证日志上传和解析高可用?

请问下, 这样的配置, 是基于每天多大的日志量, 保证日志上传和解析高可用?

目前我们公司是采用单机部署,用法是客服引导用户上传客户端日志,所以是由用户去保证上传的高可用(因为失败了用户会重试的)

小公司级别的业务量 一天几百QPS