🔴

[테코톡] Nginx 등장 배경 (vs 아파치 서버)

작성일자
Mar 12, 2023
태그
SUB PAGE
프로젝트
테코톡
책 종류

공부한 내용

[테코톡] Nginx 등장 배경 (vs 아파치 서버)

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