유튜브블로그Top 10
내 프로필

데브허브 안내
소개업데이트 소식

데브허브 커뮤니티

[10분 테코톡] 윌슨의 Event-Loop & Nginx

우아한테크

2025. 9. 19.

0

#backend
#infra
  • 이벤트 루프는 이벤트 기반의 논블로킹 작업 패턴이자 루프이며, 여기서 이벤트는 소켓 정보의 변화를 의미한다. 🔄
  • epoll은 Linux에서 사용되는 시스템 콜이자 구조체로, 소켓 정보 저장소(Interest List), 소켓 리스트 컨트롤러(epoll_ctl), 이벤트 저장 큐(Ready List), 이벤트 추출기(epoll_wait)를 포함한다. 🧰
  • EPOLLIN은 소켓이 읽을 준비가 된 상태(READABLE), EPOLLOUT은 소켓에 쓸 준비가 된 상태(WRITABLE)를 나타낸다. 🚦
  • 애플리케이션 시작 시 서버 소켓 정보가 소켓 리스트에 저장되고, 사용자 요청이 들어오면 커널이 이벤트를 발생시켜 이벤트 큐에 추가한다. 📢
  • 스레드는 epoll_wait을 호출하여 이벤트를 가져오고, 서버 소켓 이벤트 시 클라이언트 소켓을 생성하고 소켓 리스트에 추가한다. 🧑‍💻
  • Nginx는 Master Process와 Worker Process로 구성되며, Master Process는 설정 파일을 읽고 Worker Process의 생명 주기를 관리한다. ⚙️
  • Worker Process는 메인 스레드(이벤트 루프)와 스레드 풀로 구성되어, 메인 스레드는 가벼운 네트워크 I/O 작업을, 스레드 풀은 무거운 디스크 I/O 작업을 처리한다. 🤹
  • Nginx I/O 플로우는 사용자 요청 수신, 이벤트 큐에 추가, 메인 스레드가 이벤트 처리, WAS와 통신, 응답 전송의 과정을 거친다. 📤
  • Nginx는 싱글 스레드 기반 이벤트 루프 패턴을 사용하여 작업을 처리하며, 무거운 디스크 I/O 작업은 스레드 풀에 위임하여 비동기적으로 처리한다. 🚀

Recommanded Videos