Я кодирую игровой сервер, используя 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, медленные соединения или плохая сеть могут вызывать длинные очереди отправки, тем самым влияя на количество доступных потоков в пуле. Как вы думаете ?
благодарит за ответ. Я не знал команду jstack. это действительно так, что некоторые рабочие потоки блокировались. если это произойдет снова, jstack поможет мне разобраться в реальной проблеме. – WorM