TIL

Node JS는 100%싱글스레드가 아니다.

하얀잔디 2025. 7. 20. 12:49

 

우선 한줄요약)

 


Node.js는 "100% 싱글스레드"는 아니고, "이벤트 루프는 싱글스레드지만, 백그라운드 작업은 멀티스레드로 처리된다"


 Node.js의 스레드 구조 간단 요약


이벤트 루프 (싱글 스레드) 자바스크립트 코드 실행, 콜백 처리 등 주 로직 담당
libuv 스레드 풀 (기본 4개) 파일 I/O, DNS, 암호화, DB 드라이버 같은 느린 작업 처리
OS-level 비동기 (ex. epoll, IOCP) 소켓 등 일부 작업은 OS 비동기 인터페이스 사용

 

🎯 예시로 보면

const fs = require('fs'); fs.readFile('/big/file.txt', (err, data) => { console.log('파일 읽음'); });
  • readFile()은 libuv 스레드 풀에서 실행됨 → 이벤트 루프가 블로킹되지 않음
  • JS 코드는 계속 싱글 스레드로 실행되지만, 백그라운드에서 멀티스레드가 일을 함

 

💡 결론

  • Node.js는 "싱글 스레드 기반의 비동기 처리 모델"이고
  • I/O 작업이나 무거운 연산은 libuv 스레드 풀이나 OS 비동기 기능이 처리함
  • 그래서 사실상 멀티스레드를 활용하고 있음 (개발자가 직접 신경 안 써도 되도록 추상화돼 있음)

'TIL' 카테고리의 다른 글

Loki란  (0) 2025.07.23
HPA 오토스케일링 서버 첫 cpu 스파이크 무시하기  (0) 2025.07.20
VI 있어보이게 써보자..  (0) 2025.07.04
모르는 서버 접근 후 프로세스 확인방법  (0) 2025.07.04
Console vs Winston  (3) 2025.07.04