netty

netty bootstrap 옵션

키르시스 2021. 5. 7. 11:01
728x90

netty bootstrap에는 여러가지 옵션들이 있다.

 

나는 이것들이 어떤옵션들인지도 모르고 그때그떄 개발할떄 필요에 의해서 주먹구구식으로 개발을 하였다.

 

이런식으로 개발을 하면, 결국 최상의 결과가 아닌 그저 완성만 된 결과물이 나오기 마련이다.

 

그러니 일단 여기에 나온 옵션들을 최대한 참고하길 바란다.

 

"io.netty.channel.ChannelOption.TCP_NODELAY"이 옵션은

 

Nagel 알고리즘을 꺼버리는 방법을 써야 합니다. 끄려면 setsockopt와 TCP_NODELAY 옵션을 함께 사용하면 됩니다.

 

Nagel 알고리즘은 한번쯤 찾아보시길 바랍니다.

 

다음으로

 

io.netty.channel.ChannelOption.SO_RCVBUF", io.netty.channel.ChannelOption.SO_SNDBUF" 이 두가지 옵션이 있습니다.

 

SO_RCVBUF와 SO_SNDBUF 옵션을 설정하면 커널의 수신 버퍼와 송신 버퍼의 크기를 조정할 수 있다. 보통 UDP에서 사

 

용, 보통 tcp에서는 크기가 지정되어서 오고가기 때문입니다.

 

io.netty.channel.ChannelOption.CONNECT_TIMEOUT_MILLIS" 이 옵션은 이름 그대로 입니다. 네티 타임아웃

 

io.netty.channel.ChannelOption.SO_KEEPALIVE",  이 옵션은 커널에서 상대방의 상태를 확인하는 패킷을 전송한다. 이 패

 

킷에 대해 상대방이 정상적이면 ACK 패킷을 전송한다. ACK 패킷으로 정상이라고 응답하는 경우 응용 프로그램에는 어

 

떠한 통보도 하지 않고 커널 간의 확인만으로 상대방이 살아 있음을 확인하고 마무리한다. 상대방으로부터 아무런 응답

 

이 없거나 RST 응답을 받으면 소켓을 자동으로 종료한다.

 

io.netty.channel.ChannelOption.SO_BROADCAST", 이것도 이름그래도 브로드 캐스팅 설정 입니다. UDP 설정입니다.

 

그리고 필수적으로 port설정과 byteorder설정도 꼭 해줘야 합니다.

 

이건 네티 설정은 아니지만, 자주 쓰는 설정이라서 적어놓겠습니다.

 

"org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor"

 

corePoolSize = core의 pool size

 

maxPoolSize = ThreadPoolExecutor의 최대 풀 크기를 설정

 

queueCapacity = ThreadPoolExecutor의 BlockingQueue에 대한 용량을 설정합니다

 

allowCoreThreadTimeOut = 코어 스레드가 시간 초과되도록 허용할지 여부를 지정합니다. 이를 통해 0이 아닌 큐와 

 

결합하여도 동적으로 증가 및 축소 할 수 있습니다 (최대 풀 크기는 큐가 가득 차면 증가하기 때문입니다)

 

keepAliveSeconds = ThreadPoolExecutor의 Keep-alive 초를 설정합니다. 기본값은 60입니다. 이 설정은 예를 들어 JMX

 

를 통해 런타임에 수정할 수 있습니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90