기본 콘텐츠로 건너뛰기

10월, 2016의 게시물 표시

[Vert.x] Vertlcle, Event Loop 그리고 Thread

Vert.x 실행 할 때 Verticle 개수와 CPU 개수나 Thread 개수 연관 등이 궁금해서 잠시 테스트 해 보았다.

Vert.x의 Verticle은 Event Loop에서 동작한다. 여기서 Event Loop는 Netty의 "io.netty.channel.nio.NioEventLoop"를 말하며, NIO Selector 기반이다.

NIO Selector 설명간단한 EventLoop 구현NioEventLoop.java
Event Loop Pool 개수는 NioEventLoop를 생성하는 개수가 된다. Event Loop Pool 개수를 지정 하지 않으면 아래가 기본 공식이다.

2 * Runtime.getRuntime().availableProcessors()

Vert.x의 Verticle은 Event Loop에서 동작한다 했다. 정확히는 Event Loop는 Single Threaded Executor이고 Verticle은 하나의 실행 Task이다. Verticle이 실행 될 때 Thread 이름과 함께 로그를 남겨 보면 Verticle을 실행한 Event Loop의 Thread를 확인 할 수 있다.

[vert.x-eventloop-thread-0 ] INFO fs.App - !!!Start App!!! [vert.x-eventloop-thread-1 ] INFO fs.redis.Redis - !!!Start Redis!!! [vert.x-eventloop-thread-2 ] INFO fs.redis.Redis - !!!Start Redis!!! [vert.x-eventloop-thread-3 ] INFO fs.web.Http - !!!Start Http!!! [vert.x-eventloop-thread-4 ] INFO fs.web.Http - !!!Start Http!!!
코드로 Event Loop Po…