티스토리 뷰
APACHE
- 요청(Request)하나 당 프로세스(또는 스레드)가 처리하는 구조
- 즉 요청이 많을수록 CPU와 메모리사용이 증가 -> 성능 저하
- 서버의 프로세스가 블록킹이 되면 요청을 처리하지 못하고, 처리가 완료 될 때까지 계속 대기 하는 일이 발생
- 위의 문제는 Keep Alive를 활성화 함으로써 해결 가능하나, 이 때문에 대량 접속 시 효율이 급격히 떨어지는 다른 문제가 발생
- Keep Alive?
- KeepAlive On -> KeepAliveTimeOut 시간동안 접속을 끊지 않고 다음 접속을 기다림
- 한 번 연결된 클라이언트와 통신을 유지하고 있기에, 다음 통신시 Connection을 생성하고 끝는 작업이 불필요
- 성능 향상을 기대 할 수 있음
- 정적 자원으로만 구성된 웹 서버에 설정시 약 50% 성능 향상이 기대 가능 하다고 함
- 단 바쁜 서버환경에서 KeepAlive On 설정시엔 모든 요청마다 연결을 유지 -> 프로세스 수 급격히 증가 -> MaxClient 초과 -> 많은 메모리 사용 -> 성능 저하
- 즉 트래픽이 적은 서버 환경에 유리
- 2.4 버전부터 Event MPM방식을 지원 => 요청을 처리하는 스레드를 따로 두어 분산된 처리를 가능하게 함
NGINX
- 아파치에 비해 가벼움
- 보안과 속도를 최적화 시키려는 노력에서 탄생
- 사용이 매우 심플하고 규모가 작은 서비스 + 정적 데이터 처리가 많은 서비스에 적합
- 프로그램 흐름이 이벤트에 의해 결정이 되는 Event Driven(비동기 이벤트 기반) 방식
- 즉 요청에 대한 각 상태(state)를 정해서, event가 발생하면 event를 처리
- 적은 수의 스레드로 효율적인 일 처리 가능 -> 스레드당 할당되는 메모리도 작음 -> context switching 비용 적음 -> cpu소모 적음
- 모듈 개발이 어려우며, 다양한 모듈이 없는 것이 단점
- .htaccess를 지원하지 않아, ReWrite나 특정 디렉토리에만 권한부여 하는 것이 어려움
정리
- Apache는 요청 당 스레드 또는 프로세스가 처리, Nginx는 비동기 이벤트 기반으로 처리
- 최근 대용량의 정적파일 및 큰 규모의 사이트가 많아짐에 따라 대량 접속에도 적은 리소스를 사용하며 빠르게 서비스를 할 수 있는 웹 사이트가 대세가 됨
- 이로인해 Nginx가 각광 받기 시작
- 하지만 Apache 2.4가 발표되면서 Nginx에 대응 시작
- 그래도 Nginx가 성능면에서는 크진 않지만 더 뛰어남
- 하지만 PHP모듈등을 직접 적재가능한 구조적 특징상 복잡한 사이트의 경우 Apache가 유리, 손쉬운 셋팅도 한 몫
- 안정성, 확장성, 호환성은 Apache가 성능은 Nginx가 우세
« 2025/08 »
일 |
월 |
화 |
수 |
목 |
금 |
토 |
|
|
|
|
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
|
|
|
|
|
|