我有一个使用netty处理与某些外部设备通信的应用程序。该应用程序在JBoss EAP 6.1上运行。似乎当设备断开连接时,正在运行的线程数增加,但在删除TIME_WAIT连接后不会减少。 它看起来像这样:
1 LISTEN
Threads: 207
1 LISTEN
1 TIME_WAIT
Threads: 211
1 LISTEN
1 TIME_WAIT
Threads: 211
1 LISTEN
1 TIME_WAIT
Threads: 210
1 LISTEN
1 TIME_WAIT
Threads: 209
1 LISTEN
1 TIME_WAIT
Threads: 209
1 LISTEN
1 TIME_WAIT
Threads: 209
1 LISTEN
Threads: 209
1 LISTEN
Threads: 209
正如您所看到的,在连接之前的线程数是207,当设备建立并断开连接时,线程数为211 - 下降到209,但它永远不会下降到207.上述场景的每次下一次出现导致线程数增加,因此最终抛出OutOfMemory。我已经添加了一些日志记录到我实现的每个自定义Thread类的run()方法,所以我可以匹配" Thread started"用"线程结束"似乎所有自定义线程都会结束。 这个问题可能是什么原因?
答案 0 :(得分:0)
我认为您没有在shutdownGracefully
上致电EventExecutorGroup
。这应该可以解决你的问题。