2011-12-19 1 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(); 
       } 

Все еще я столкнулся с той же проблемой.

В этом игровом сервере у меня есть заданные задачи (есть отдельный пул execuntthread), например каждые три секунды он отправляет сообщение 1800 клиентам. Это может быть проблема? Вы когда-нибудь сталкивались с такой проблемой?

Я полагаю, что проблема с отправкой данных клиентам периодически может быть проблемой. Поскольку, поскольку мы используем пул потоков в netty, медленные соединения или плохая сеть могут вызывать длинные очереди отправки, тем самым влияя на количество доступных потоков в пуле. Как вы думаете ?

ответ

0

Вы уверены, что не заблокируете нить ioworker? Я бы взял некоторые нитки.

jstack <pid> 
+0

благодарит за ответ. Я не знал команду jstack. это действительно так, что некоторые рабочие потоки блокировались. если это произойдет снова, jstack поможет мне разобраться в реальной проблеме. – WorM