JBoss + Netty +连接由peer重置=线程泄漏

时间:2015-04-07 12:16:37

标签: java jboss netty

我有一个使用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"用"线程结束"似乎所有自定义线程都会结束。 这个问题可能是什么原因?

1 个答案:

答案 0 :(得分:0)

我认为您没有在shutdownGracefully上致电EventExecutorGroup。这应该可以解决你的问题。