org.jboss.netty внезапно перестает служить - PullRequest
0 голосов
/ 19 декабря 2011

Я кодирую игровой сервер, используя org.jboss.netty. Если честно, я впервые пишу приложение TCP / IP.

Нетти внезапно перестает вызывать мои функции в обработчике. Я попытался добавить следующие строки, чтобы отключить пустые соединения:

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, медленные соединения или плохая сеть могут вызывать длинные очереди отправки, что влияет на количество доступных потоков в пуле. Что ты думаешь?

1 Ответ

0 голосов
/ 20 декабря 2011

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

jstack <pid>
...