콘텐츠로 이동

2021 10 21

2021-10-21

테코톡 Nginx

  • 아파치 HTTP Server - Request 들어올때마다 process 하나씩 - 시간 오래걸리네, prefork로 미리 process 만들어두자 - 다양한 모듈 만들어서 확장성 높일 수 있도록 지원 - But, 동시 연결된 커넥션이 엄청 많아지면 뻗어! - C10K == Connection 10000 Problem - 동시 연결된 커넥션 수 != 초당 요청 처리 수 - 요청 보낼 때 Connection 재활용하자 - keep-alive로 유지 - 동시 커넥션 수가 만단위로 넘어가면 커넥션 생성 X - 하드웨어는 문제 X - 아파치가 리퀘스트별로 프로세스 => 메모리 부족 현상 - 여러가지 기능 확장 모듈 == 메모리 더 부족 - 프로세스 기반이다 보니 컨텍스트 스위칭 뒤지게 일어남 => CPU 터질랑말랑
  • nginx 두둥등장 - 아파치 앞단에 nginx 둘라고 탄생 - master process, worker process - worker process (keep alive 시간만큼 유지) - 커넥션(리퀘스트 처리) == 이벤트 드리븐 - 커널이 리퀘스트 처리 해야할 것을 Queue에 묶어둠 (비동기) - worker 프로세스는 하드웨어의 core 만큼 생성 - 동시 커넥션 양 아파치에 비해 최소 10배 증가
  • nginx 장점 - ssl termination - 한 번 서버로 부터 받은 응답 캐싱