본문 바로가기
Study/Server

[Server] APACHE와 NGINX의 특징과 차이

by _royJang 2021. 8. 29.

APACHE의 특징

  • Apache는 서버의 요청에 1:1로 프로세스 또는 쓰레드가 대응하는 방식
  • 요청이 늘어날 수록 CPU와 메모리 사용량이 늘어남
  • 프로세스가 Blocking 현상이 일어나면 요청을 처리하지 못하고 계속해서 대기하는 현상이 생김

⇒이를 해결하기 위한 방법으로 Keep Alive를 사용.

Keep Alive란 설정한 KeepAlive TimeOut 동안 접속을 끊지 않고 다음 접속을 기다리는것

즉, 한번 연결된 클라이언트와의 연결을 지속하고 있는다는 것

→ Apache의 성능 향상 기대

but.

바쁜 서버 환경에서 KeepAlive On으로 설정해 놓을 경우, 모든 요청 마다 연결을 유지해야 하기 때문에 프로세스 수가 기하급수적으로 늘어나 MaxClient값을 초과

→ Apache의 성능 저하

NGINX의 특징

  • 보안과 속도를 최적화 시키려는 노력에서 만들어진 웹서버
  • 심플하고 규모가 작으면서 정적 데이터처리가 많은 서비스에 적합
  • 프로그램의 흐름이 이벤트에 의해 결정되는 Event Driven 방식의 웹서버

⇒ Event Driven 방식을 사용함으로써 적은 수의 쓰레드로 효율적인 일 처리를 하며, 쓰레드를 적게 사용

또한 쓰레드를 많이 사용하지 않기 때문에 context switching 비용이 적고, 따라서 CPU 소모도 적음

APACHE vs NGINX

비교대상 APACHE NGINX
요청 처리 방식 요청당 프로세스 or 쓰레드가 처리 Event Driven 형식으로 처리
모듈 제작 모듈 제작 편리 모듈 제작 힘듬
성능 비교적 떨어짐 비교적 좋음
안정성 비교적 좋음 비교적 떨어짐
확장성 비교적 좋음 비교적 떨어짐
보안성 비교적 좋음 비교적 떨어짐