2012-04-19 4 views
1

netty의 udp는 단일 스레드 모드에서 실행됩니까?netty의 udp는 단일 스레드 모드에서 실행됩니까?

I는 아래처럼 NioDatagramChannelFactory 구성한 :

새로운 NioDatagramChannelFactory (Executors.newFixedThreadPool (4), 4));

그러나 코드를 서버로 실행하고 20 개 이상의 클라이언트가 점차적으로 udp 패키지를 보내면 서버는 여전히 하나의 작업자 스레드 만 사용합니다.

왜?

답변

0

일반적으로 여기서 4 개의 작업자 스레드를 사용해야합니다. 그렇다면 어떻게 하나의 스레드 만 사용한다는 것을 어떻게 알 수 있습니까? jstack을 사용하여 실행중인 작업자 스레드의 수를 확인 했습니까?

당신은 또한이 최대에있는의주의를 기울여야한다

new NioDatagramChannelFactory(Executors.newCachedThreadPool(), 4));

를 사용해야합니다. 4 개의 작업자 스레드.

+0

Norman, 채널 팩토리를 NioDatagramChannelFactory로 변경하여 EchoServer를 변경하여 테스트했지만 한 개의 작업자 스레드 만 볼 수 있지만 NioServerChannelFactory에서는 8 개의 작업자 스레드를 볼 수 있습니다. (20 명 이상의 클라이언트 모두에서 테스트), 분기 3에서 포크로 테스트 (마지막 커밋은 2c2d64a75ea9c636c90b8b16293296a47c7cfd32 임), 최신 3 분기로 테스트 할 수 없었습니다. –