noone6931 opened a new issue, #8959:
URL: https://github.com/apache/rocketmq/issues/8959

   ### Before Creating the Bug Report
   
   - [X] I found a bug, not just asking a question, which should be created in 
[GitHub Discussions](https://github.com/apache/rocketmq/discussions).
   
   - [X] I have searched the [GitHub 
Issues](https://github.com/apache/rocketmq/issues) and [GitHub 
Discussions](https://github.com/apache/rocketmq/discussions)  of this 
repository and believe that this is not a duplicate.
   
   - [X] I have confirmed that this bug belongs to the current repository, not 
other repositories of RocketMQ.
   
   
   ### Runtime platform environment
   
   centos8 
   
   ### RocketMQ version
   
   rocketmq v4.3.2
   
   ### JDK Version
   
   oracle jdk1.8_121
   
   ### Describe the Bug
   
   Hello,
   
   We are encountering an OutOfMemoryError (OOM) on one of our RocketMQ 
brokers. The issue occurred on November 15th at 17:47:18, and the error message 
indicates that the Java heap space was exhausted. However, based on the system 
metrics, we did not observe any anomalies leading up to the event, and the OOM 
error could be a symptom rather than the root cause.
   
   The JVM heap memory was set to 6GB, and the machine had 16GB of total memory 
at the time of the issue. We are unsure what caused the broker to run out of 
memory, as the system appeared to be functioning normally before the OOM 
occurred.
   
   Here is the broker.log at that moment:
   2024-11-15 17:47:18 WARN PullMessageThread_8 - FULL_OFFSET:correction 
offset: TOOLS_CONSUMER, topic=zqyl-bank-ny1002, group=TOOLS_CONSUMER, 
requestOffset=0, newOffset=25598, suggestBrokerId=0 BrokerMinOffset=25559, 
clientIp=172.16.1.230
   2024-11-15 17:47:18 ERROR BrokerControllerScheduledThread1 - persist 
consumerOffset error.
   java.lang.OutOfMemoryError: Java heap space
   2024-11-15 17:47:18 INFO NettyEventExecutor - NETTY EVENT: remove channel 
[ClientChannelInfo [channel=[id: 0x194e828d, L:/172.16.1.230:10911 - 
R:/172.16.1.162:44598]
   2024-11-15 17:47:19 ERROR NettyServerNIOWorker_3_2 - transfer many message 
by pagecache failed.
   java.util.concurrent.RejectedExecutionException: event executor terminated
        at 
io.netty.util.concurrent.SingleThreadEventExecutor.reject(SingleThreadEventExecutor.java:805)
        at 
io.netty.util.concurrent.SingleThreadEventExecutor.offerTask(SingleThreadEventExecutor.java:338)
        at 
io.netty.util.concurrent.SingleThreadEventExecutor.addTask(SingleThreadEventExecutor.java:328)
        at 
io.netty.util.concurrent.SingleThreadEventExecutor.execute(SingleThreadEventExecutor.java:748)
        at 
io.netty.channel.AbstractChannelHandlerContext.safeExecute(AbstractChannelHandlerContext.java:1000)
        at 
io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:829)
        at 
io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:790)
        at 
io.netty.channel.DefaultChannelPipeline.write(DefaultChannelPipeline.java:1013)
        at 
io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:702)
        at 
io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:110)
        at 
io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:702)
        at 
org.apache.rocketmq.broker.processor.PullMessageProcessor.processRequest(PullMessageProcessor.java:839)
        at 
org.apache.rocketmq.broker.processor.PullMessageProcessor.access$2(PullMessageProcessor.java:539)
        at 
org.apache.rocketmq.broker.processor.PullMessageProcessor$2.run(PullMessageProcessor.java:884)
        at 
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
   
   The remoting.log:
   
   2024-11-15 17:47:16 INFO NettyServerCodecThread_7 - NETTY SERVER PIPELINE: 
channelRegistered 172.16.2.196:16378
   2024-11-15 17:47:16 INFO NettyServerCodecThread_3 - NETTY SERVER PIPELINE: 
channelActive, the channel[172.16.2.196:16378]
   2024-11-15 17:47:16 INFO NettyServerCodecThread_3 - NETTY SERVER PIPELINE: 
channelInactive, the channel[172.16.2.196:16378]
   2024-11-15 17:47:16 INFO NettyServerCodecThread_3 - NETTY SERVER PIPELINE: 
channelUnregistered, the channel[172.16.2.196:16378]
   2024-11-15 17:47:18 WARN NettyServerCodecThread_5 - NETTY SERVER PIPELINE: 
exceptionCaught 172.16.1.231:56206
   java.lang.OutOfMemoryError: Java heap space
   2024-11-15 17:47:18 INFO NettyServerNIOSelector_3_2 - closeChannel: close 
the connection to remote address[172.16.1.231:56206] result: true
   2024-11-15 17:47:18 WARN NettyServerCodecThread_5 - NETTY SERVER PIPELINE: 
exceptionCaught exception.
   java.lang.OutOfMemoryError: Java heap space
        at 
io.netty.buffer.PooledUnsafeDirectByteBuf$1.newUnsafeDirectByteBuffer(PooledUnsafeDirectByteBuf.java:34)
 ~[netty-all-4.0.42.Final.jar:4.0.42.Final]
        at 
io.netty.buffer.PooledUnsafeDirectByteBuf$1.newInstance(PooledUnsafeDirectByteBuf.java:31)
 ~[netty-all-4.0.42.Final.jar:4.0.42.Final]
        at io.netty.util.Recycler.get(Recycler.java:147) 
~[netty-all-4.0.42.Final.jar:4.0.42.Final]
        at 
io.netty.buffer.PooledUnsafeDirectByteBuf.newByteBuffer(PooledUnsafeDirectByteBuf.java:367)
 ~[netty-all-4.0.42.Final.jar:4.0.42.Final]
        at io.netty.buffer.PoolArena$DirectArena.allocate(PoolArena.java:727) 
~[netty-all-4.0.42.Final.jar:4.0.42.Final]
        at io.netty.buffer.PoolArena.allocate(PoolArena.java:140) 
~[netty-all-4.0.42.Final.jar:4.0.42.Final]
        at 
io.netty.buffer.PooledUnsafeDirectByteBuf.<init>(PooledUnsafeDirectByteBuf.java:49)
 ~[netty-all-4.0.42.Final.jar:4.0.42.Final]
        at 
io.netty.buffer.PooledUnsafeDirectByteBuf.newByteBuffer(PooledUnsafeDirectByteBuf.java:367)
 ~[netty-all-4.0.42.Final.jar:4.0.42.Final]
        at io.netty.buffer.PoolArena$DirectArena.allocate(PoolArena.java:727) 
~[netty-all-4.0.42.Final.jar:4.0.42.Final]
        at io.netty.buffer.PoolArena.allocate(PoolArena.java:140) 
~[netty-all-4.0.42.Final.jar:4.0.42.Final]
        at 
io.netty.buffer.PooledUnsafeDirectByteBuf.<init>(PooledUnsafeDirectByteBuf.java:49)
 ~[netty-all-4.0.42.Final.jar:4.0.42.Final]
        at 
io.netty.buffer.PooledUnsafeDirectByteBuf.newByteBuffer(PooledUnsafeDirectByteBuf.java:367)
 ~[netty-all-4.0.42.Final.jar:4.0.42.Final]
        at 
io.netty.buffer.AbstractByteBufAllocator.directBuffer(AbstractByteBufAllocator.java:179)
 ~[netty-all-4.0.42.Final.jar:4.0.42.Final]
        at 
io.netty.buffer.AbstractByteBufAllocator.directBuffer(AbstractByteBufAllocator.java:168)
 ~[netty-all-4.0.42.Final.jar:4.0.42.Final]
        at 
io.netty.channel.nio.AbstractNioByteChannel.newDirectBuffer(AbstractNioByteChannel.java:129)
 ~[netty-all-4.0.42.Final.jar:4.0.42.Final]
        at 
io.netty.channel.nio.AbstractNioByteChannel.filterOutboundMessage(AbstractNioByteChannel.java:104)
 ~[netty-all-4.0.42.Final.jar:4.0.42.Final]
        at 
io.netty.channel.AbstractChannel$AbstractUnsafe.write(AbstractChannel.java:799) 
~[netty-all-4.0.42.Final.jar:4.0.42.Final]
        at 
io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:702)
 ~[netty-all-4.0.42.Final.jar:4.0.42.Final]
        at 
io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:702)
 ~[netty-all-4.0.42.Final.jar:4.0.42.Final]
        at 
org.apache.rocketmq.remoting.protocol.RemotingCommand.createResponseCommand(RemotingCommand.java:115)
 ~[rocketmq-remoting-4.3.2-zqyl.jar:4.3.2]
        at 
org.apache.rocketmq.remoting.protocol.RemotingCommand.createResponseCommand(RemotingCommand.java:100)
 ~[rocketmq-remoting-4.3.2-zqyl.jar:4.3.2]
        at 
org.apache.rocketmq.broker.processor.PullMessageProcessor.processRequest(PullMessageProcessor.java:657)
 ~[rocketmq-broker-4.3.2-zqyl.jar:na]
        at 
org.apache.rocketmq.remoting.netty.NettyRemotingAbstract$1.run(NettyRemotingAbstract.java:182)
 ~[rocketmq-remoting-4.3.2-zqyl.jar:4.3.2]
        at 
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
[na:1.8.0_121]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
[na:1.8.0_121]
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 
[na:1.8.0_121]
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 
[na:1.8.0_121]
        at java.lang.Thread.run(Thread.java:745) [na:1.8.0_121]
   
   
   The broker_default.log:
   2024-11-15 17:47:18 WARN NettyServerNIOSelector_3_2 - Unexpected exception 
in the selector loop.
   java.lang.OutOfMemoryError: Java heap space
        at 
io.netty.util.concurrent.SingleThreadEventExecutor.reject(SingleThreadEventExecutor.java:805)
 ~[netty-all-4.0.42.Final.jar:4.0.42.Final]
        at 
io.netty.util.concurrent.SingleThreadEventExecutor.offerTask(SingleThreadEventExecutor.java:338)
 ~[netty-all-4.0.42.Final.jar:4.0.42.Final]
        at 
io.netty.util.concurrent.SingleThreadEventExecutor.addTask(SingleThreadEventExecutor.java:328)
 ~[netty-all-4.0.42.Final.jar:4.0.42.Final]
        at 
io.netty.util.concurrent.SingleThreadEventExecutor.execute(SingleThreadEventExecutor.java:748)
 ~[netty-all-4.0.42.Final.jar:4.0.42.Final]
        at 
io.netty.channel.AbstractChannelHandlerContext.safeExecute(AbstractChannelHandlerContext.java:1000)
 ~[netty-all-4.0.42.Final.jar:4.0.42.Final]
        at 
io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:829)
 ~[netty-all-4.0.42.Final.jar:4.0.42.Final]
        at 
io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:790)
 ~[netty-all-4.0.42.Final.jar:4.0.42.Final]
        at 
io.netty.channel.DefaultChannelPipeline.write(DefaultChannelPipeline.java:1013) 
~[netty-all-4.0.42.Final.jar:4.0.42.Final]
        at 
io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:702)
 ~[netty-all-4.0.42.Final.jar:4.0.42.Final]
        at 
io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:110)
 ~[netty-all-4.0.42.Final.jar:4.0.42.Final]
        at 
io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:702)
 ~[netty-all-4.0.42.Final.jar:4.0.42.Final]
        at 
org.apache.rocketmq.broker.processor.PullMessageProcessor.processRequest(PullMessageProcessor.java:839)
 ~[rocketmq-broker-4.3.2-zqyl.jar:na]
        at 
org.apache.rocketmq.broker.processor.PullMessageProcessor.access$2(PullMessageProcessor.java:539)
 ~[rocketmq-broker-4.3.2-zqyl.jar:na]
        at 
org.apache.rocketmq.broker.processor.PullMessageProcessor$2.run(PullMessageProcessor.java:884)
 ~[rocketmq-broker-4.3.2-zqyl.jar:na]
        at 
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
[na:1.8.0_121]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
[na:1.8.0_121]
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 
[na:1.8.0_121]
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 
[na:1.8.0_121]
        at java.lang.Thread.run(Thread.java:745) [na:1.8.0_121]
   2024-11-15 17:47:18 ERROR AdminBrokerThread_14 - Failed to submit a listener 
notification task. Event loop shut down?
   java.util.concurrent.RejectedExecutionException: event executor terminated
        at 
io.netty.util.concurrent.SingleThreadEventExecutor.reject(SingleThreadEventExecutor.java:805)
 ~[netty-all-4.0.42.Final.jar:4.0.42.Final]
        at 
io.netty.util.concurrent.SingleThreadEventExecutor.offerTask(SingleThreadEventExecutor.java:338)
 ~[netty-all-4.0.42.Final.jar:4.0.42.Final]
        at 
io.netty.util.concurrent.SingleThreadEventExecutor.addTask(SingleThreadEventExecutor.java:328)
 ~[netty-all-4.0.42.Final.jar:4.0.42.Final]
        at 
io.netty.util.concurrent.SingleThreadEventExecutor.execute(SingleThreadEventExecutor.java:748)
 ~[netty-all-4.0.42.Final.jar:4.0.42.Final]
        at 
io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:435)
 ~[netty-all-4.0.42.Final.jar:4.0.42.Final]
        at 
io.netty.util.concurrent.DefaultPromise.setFailure(DefaultPromise.java:120) 
~[netty-all-4.0.42.Final.jar:4.0.42.Final]
        at 
io.netty.channel.DefaultChannelPromise.setFailure(DefaultChannelPromise.java:87)
 ~[netty-all-4.0.42.Final.jar:4.0.42.Final]
        at 
io.netty.channel.AbstractChannelHandlerContext.safeExecute(AbstractChannelHandlerContext.java:1004)
 ~[netty-all-4.0.42.Final.jar:4.0.42.Final]
        at 
io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:799)
 ~[netty-all-4.0.42.Final.jar:4.0.42.Final]
        at 
io.netty.channel.DefaultChannelPipeline.writeAndFlush(DefaultChannelPipeline.java:1032)
 ~[netty-all-4.0.42.Final.jar:4.0.42.Final]
        at 
org.apache.rocketmq.remoting.netty.NettyRemotingAbstract$1.run(NettyRemotingAbstract.java:182)
 ~[rocketmq-remoting-4.3.2-zqyl.jar:4.3.2]
        at 
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
[na:1.8.0_121]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
[na:1.8.0_121]
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 
[na:1.8.0_121]
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 
[na:1.8.0_121]
        at java.lang.Thread.run(Thread.java:745) [na:1.8.0_121]
   
   
   
   ### Steps to Reproduce
   
   
   1. RocketMQ broker was running with 6GB of JVM heap on a machine with 16GB 
total memory.
   2. The broker was processing normal message traffic, including consumers and 
producers sending and receiving messages.
   3. The issue occurred suddenly at 17:47:18 without any prior warning and 
resulted in an OutOfMemoryError (Java heap space) during message processing and 
offset persistence.
   
   
   
   
   ### What Did You Expect to See?
   
   We expected the broker to handle message processing and memory allocation 
without running into memory exhaustion. The system should have utilized the 
allocated 6GB of JVM heap memory efficiently without causing an 
OutOfMemoryError.
   
   ### What Did You See Instead?
   
   The broker encountered an OutOfMemoryError (Java heap space), which led to a 
failure in message processing. This was followed by Netty errors related to 
memory allocation and task rejection, preventing the broker from handling new 
requests.
   
   ### Additional Context
   
   _No response_


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscr...@rocketmq.apache.org.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to