공부한 내용
[테코톡] Nginx 등장 배경 (vs 아파치 서버)
•
아파치 서버
◦
등장)
▪
unix 기반 최초의 웹서버 NCSA HTTPd의 버그가 많아, 이를 수정해 만든 것이 아파치 서버 (1995)
◦
구조)
▪
새로운 요청 들어옴 → 새로운 프로세스 생성 → 커넥션 형성
•
유닉스 계열 OS가 네트워크 커넥션 형성하는 모델 적용한 것
▪
prefork 방식 사용함
•
프로세스 생성 시간 오래 걸림 → 요청 전 프로세스 미리 생성해 해결
•
생성해둔 프로세스 모두 할당됨 → 추가로 프로세스 생성
◦
장점)
▪
개발 쉬움
•
서버에 기능 추가 쉬움
•
동적 컨텐츠 처리 가능
▪
확장성 좋음
•
요청, 응답 처리를 하나의 서버에서 해결 가능
◦
단점)
▪
1999, 인터넷 트래픽 증가 → C10K 문제 발생
•
클라이언트 수 많아지면 동시 연결 커넥션 많아짐 → 동시 커넥션 수 10000 넘어가면 더이상 추가적인 커넥션 형성이 불가한 C10K 문제 발생
클라이언트 수와 동시 연결 커넥션의 상관 관계 (토글)
▪
아파치 서버 구조 상 동시 처리 커넥션 많아지면 발생하는 문제들
•
할당되는 프로세스가 많아져 메모리 부족 현상을 일으킴
•
여러 기능이 추가된 무거운 프로그램으로 인해 프로세스가 차지하는 리소스 양 더 늘어남
•
많은 커넥션에서 요청 들어오면 CPU 코어 컨텍스트 스위칭 빈번해져 CPU 부하 일으킴
•
Nginx
◦
등장) 새로운 구조 채택해, 아파치 서버 보완하는 소프트웨어로 만든 것이 Nginx (2004)
◦
초기 목적)
▪
아파치 서버 앞 단에 놓여서 아파치 서버의 구조적 한계를 보완
•
많은 동시 커넥션 대신 유지
•
웹 서버 역할
◦
정적 파일에 대한 요청 스스로 처리 가능
◦
동적 파일 요청 받았을 때만 서버와 커넥션 형성