클라우드 컴퓨팅 & NoSQL/Vert.x & Node.js

Single Threaded Model이라서 더 빠르다? No.!!

Terry Cho 2014. 2. 16. 22:03

Single Threaded Model이라서 더 빠르다? No.!!


Vert.x나 Node.JS와 같은 Single Threaded 모델의 서버들이 내세우는 장점이, Single Thread Model이기 때문에, Context Switching이 없고, 이로 인해서 성능이 더 빠르다. 라는 논리인데, 사실 DB나 File IO가 있을 경우, 뒷단의 Thread Pool에 request & call back 형식으로 처리를 하고 있기 때문에, 이 경우에는 Single Thread Model이 아니라 Multi Thread Model이 되고, 이 Thread Pool들의 Thread로 인한 Context Switching이 발생하게 된다.


이런 IO Call이 없는 경우 (Thread Pool로 작업을 보내지 않는 경우), 당연히 Context Switching 부하가 없기 때문에 빠르겠지만, DB 작업이 들어 갈경우,  http://www.techempower.com/benchmarks/#section=data-r8&hw=i7&test=query

의 자료를 보면, 오히려 Servlet이 더 빠른걸 볼 수 있다.


servlet-raw : resin + mysql

nodejs-mysql : nodejs + mysql



출처 : http://www.techempower.com/benchmarks/#section=data-r8&hw=i7&test=query

Disk나 DB 작업이 비교적 적은 메세징 등에서는 node나 vert.x가 메리트가 있겠지만, 일반적인 DB,FILE TX에서는 역시 WAS가 더 효율성이 높다.