요청(Connection) 이 들어오면 로직을 수행하기 위해 Thread 를 할당받는다. Thread 는 요청 온 작업을 대리로 수행하는 주체이다. Application 의 로직을 수행하다가, 파일을 읽거나 DB 에 접근하는 등의 Application 의 외부에서의 작업이 필요한 경우가 있다. 외부 기능을 수행하기 위해 Kernel Thread 에게 위임하면 이전에 사용되고 있던 (User) Thread 는 잠시 쉬고 있는 상태가 된다. 이러한 경우 쉬고 있는 Thread 를 다른 Connection 이 사용하는 방식을 NIO 라고 한다.

즉, 정리해보면 Connection 은 말 그대로 Application 이 요청받은(보유하는) 수이다. Thread 는 Application 의 로직을 수행하기 위해 잠시 거쳐가는 주체이다.

Untitled

Thread 는 개별로 Stack 을 사용하여 메모리의 일부를 차지한다. 그래서 Thread 의 수가 성능에 영향을 미칠 수있어 가장 좋은 성능을 내는 수 중에서 가장 작은 수로 설정하는 것이 좋다. Connection 은 Thread 에 비해서 차지하는 메모리의 양이 적다. 그래서 가장 좋은 성능을 내는 설정에서 큰 값을 가져도 좋다.