mp911de/logstash-gelf

OutOfMemoryError: Cannot reserve 327680 bytes of direct buffer memory

SSilence opened this issue · 1 comments

I'm using the latest version 1.15.0. After my applications have been running about one day I get following exception:

Exception in thread "Thread-1" java.lang.OutOfMemoryError: Cannot reserve 327680 bytes of direct buffer memory (allocated: 10313728, limit: 10485760)
2023-02-14T08:39:07.325+01:00 [APP/PROC/WEB/0] [ERR] at java.base/java.nio.Bits.reserveMemory(Unknown Source)
2023-02-14T08:39:07.325+01:00 [APP/PROC/WEB/0] [ERR] at java.base/java.nio.DirectByteBuffer.<init>(Unknown Source)
2023-02-14T08:39:07.325+01:00 [APP/PROC/WEB/0] [ERR] at java.base/java.nio.ByteBuffer.allocateDirect(Unknown Source)
2023-02-14T08:39:07.325+01:00 [APP/PROC/WEB/0] [ERR] at biz.paluch.logging.gelf.intern.sender.GelfUDPSender$1.initialValue(GelfUDPSender.java:25)
2023-02-14T08:39:07.325+01:00 [APP/PROC/WEB/0] [ERR] at biz.paluch.logging.gelf.intern.sender.GelfUDPSender$1.initialValue(GelfUDPSender.java:22)
2023-02-14T08:39:07.325+01:00 [APP/PROC/WEB/0] [ERR] at java.base/java.lang.ThreadLocal.setInitialValue(Unknown Source)
2023-02-14T08:39:07.325+01:00 [APP/PROC/WEB/0] [ERR] at java.base/java.lang.ThreadLocal.get(Unknown Source)
2023-02-14T08:39:07.325+01:00 [APP/PROC/WEB/0] [ERR] at biz.paluch.logging.gelf.intern.sender.GelfBuffers.getBuffer(GelfBuffers.java:69)
2023-02-14T08:39:07.325+01:00 [APP/PROC/WEB/0] [ERR] at biz.paluch.logging.gelf.intern.sender.GelfBuffers.toUDPBuffers(GelfBuffers.java:35)
2023-02-14T08:39:07.325+01:00 [APP/PROC/WEB/0] [ERR] at biz.paluch.logging.gelf.intern.sender.GelfUDPSender.sendMessage(GelfUDPSender.java:47)
2023-02-14T08:39:07.325+01:00 [APP/PROC/WEB/0] [ERR] at biz.paluch.logging.gelf.logback.GelfLogbackAppender.append(GelfLogbackAppender.java:94)
2023-02-14T08:39:07.325+01:00 [APP/PROC/WEB/0] [ERR] at biz.paluch.logging.gelf.logback.GelfLogbackAppender.append(GelfLogbackAppender.java:67)
2023-02-14T08:39:07.325+01:00 [APP/PROC/WEB/0] [ERR] at ch.qos.logback.core.AppenderBase.doAppend(AppenderBase.java:83)
2023-02-14T08:39:07.325+01:00 [APP/PROC/WEB/0] [ERR] at ch.qos.logback.core.spi.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:51)
2023-02-14T08:39:07.325+01:00 [APP/PROC/WEB/0] [ERR] at ch.qos.logback.classic.Logger.appendLoopOnAppenders(Logger.java:272)
2023-02-14T08:39:07.325+01:00 [APP/PROC/WEB/0] [ERR] at ch.qos.logback.classic.Logger.callAppenders(Logger.java:259)
2023-02-14T08:39:07.325+01:00 [APP/PROC/WEB/0] [ERR] at ch.qos.logback.classic.Logger.buildLoggingEventAndAppend(Logger.java:426)
2023-02-14T08:39:07.325+01:00 [APP/PROC/WEB/0] [ERR] at ch.qos.logback.classic.Logger.filterAndLog_0_Or3Plus(Logger.java:386)
2023-02-14T08:39:07.325+01:00 [APP/PROC/WEB/0] [ERR] at ch.qos.logback.classic.Logger.info(Logger.java:584)

I have seen #169 and #172 and I'm wondering how this could still happen.

Do you have any idea what the reason could be? Thanks a lot!!

With 10mb of direct memory, it is likely that you quickly hit the limit. Disable the buffering by setting logstash-gelf.buffer.size to zero. (logstash-gelf.buffer.size=0).