2011-12-19 12 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クライアントにメッセージを送信するなど、タイムアウトしたタスク(別のexecuterthreadプールを持つ)があります。これは問題になりますか?この種の問題に直面したことはありますか?

クライアントにデータを定期的にプッシュすることが問題である可能性があります。 Nettyのスレッドプールを使用するとき、接続が遅いかネットワークが悪いと、長い送信キューが発生し、プール内のスレッド数が有効になる可能性があります。どう思いますか ?

答えて

0

ioworkerスレッドを何とかブロックしてもよろしいですか?私はいくつかのスレッドダンプを取って確実にする。

jstack <pid> 
+0

答えに感謝します。私はjstackコマンドを知らなかった。何らかの形で作業スレッドがブロックされていたことは実際には真実です。それが再び起こると、jstackは実際の問題を理解するのに役立ちます。 – WorM

関連する問題