2011-12-19 68 views
0

我使用org.jboss.netty編碼遊戲服務器。說實話,這是我第一次編寫TCP/IP應用程序。org.jboss.netty突然停止服務

Netty突然停止在處理程序中調用我的函數。我嘗試添加以下幾行來激活空閒連接:

LINE 1 TO PIPELINE : pipeline.addLast("timeout", new IdleStateHandler(idleTimer, 82 , 0, 0)); 

LINES TO HANDLER : 
    public void channelIdle(ChannelHandlerContext ctx, IdleStateEvent e) throws Exception { 
        super.channelIdle(ctx, e);   
         ctx.getChannel().close(); 
       } 

我仍然面臨同樣的問題。

在這個遊戲服務器中,我有定時任務(有單獨的執行線程池),例如每3秒發送消息給1800個客戶端。這可能是一個問題嗎?你有沒有遇到這種問題?

我想定期推送數據給客戶可能是問題。因爲我們在netty中使用線程池,所以連接速度慢或網絡不好可能會導致長髮送隊列,從而影響池中的可用線程數。你怎麼看 ?

回答

0

你確定你不是不知何故阻止了ioworker線程嗎?我會採取一些線程轉儲來確保。

jstack <pid> 
+0

感謝您的回答。我不知道jstack命令。其實際上確實有些工作線程被阻塞。如果它再次發生,jstack將幫助我找出實際問題。 – WorM 2011-12-28 12:17:34