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

여전히 동일한 문제에 직면하고 있습니다.

이 게임 서버에서는 1800 클라이언트에 메시지를 보내는 3 초마다 예기치 않은 작업 (별도의 executerthread 풀 사용)이 있습니다. 이것이 문제가 될 수 있습니까? 이런 종류의 문제에 직면 해본 적이 있습니까?

클라이언트에 주기적으로 데이터를 푸시하는 것이 문제 일 수 있습니다. Netty에서 스레드 풀을 사용할 때 연결 속도가 느리거나 네트워크가 잘못되면 긴 전송 대기열이 생겨 풀에서 사용 가능한 스레드 수에 영향을 줄 수 있습니다. 어떻게 생각해 ?

답변

0

ioworker 스레드를 어떻게 든 차단하지 않습니까? 나는 스레드 덤프 (thread-dumps)를 사용하여 확신 할 수있다.

jstack <pid> 
+0

답해 주셔서 감사합니다. 나는 jstack 명령을 안다. 실제로는 어떻게 든 작동하는 스레드가 차단되고 있다는 사실입니다. jstack이 다시 발생하면 실제 문제를 파악하는 데 도움이됩니다. – WorM

관련 문제