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 형식으로 처리 |
모듈 제작 | 모듈 제작 편리 | 모듈 제작 힘듬 |
성능 | 비교적 떨어짐 | 비교적 좋음 |
안정성 | 비교적 좋음 | 비교적 떨어짐 |
확장성 | 비교적 좋음 | 비교적 떨어짐 |
보안성 | 비교적 좋음 | 비교적 떨어짐 |
'Study > Server' 카테고리의 다른 글
[Server] Go Web Server HTTPS 적용하기 (0) | 2022.06.07 |
---|---|
[Server] OAuth 알고 쓰기 (0) | 2022.06.02 |
[Server] 인증(Authentication)과 인가(Authorization), 그리고 JWT(JSON Web Token) (0) | 2022.05.01 |
[Network] HTTP란? 그리고 HTTP 1.1, HTTP 2 (0) | 2021.09.02 |
[Server] REST API란? REST API 알고 쓰기 (0) | 2021.08.31 |