CS지식

Nginx vs APACHE

두잇 두두 2024. 10. 8. 13:52
728x90

APACHE

요청이 들어오면 커넥션을 형성하기 위해 프로세스 생성 (계속해서 새로운 프로세스가 만들어짐)

PREFORK를 통해 미리 프로세스를 생성해서 요청이 들어오면 대응하는 방식으로 바뀜

=> 개발하기 쉽다, 확장성이 좋다, 안정성이 높다

 

시간이 지나 C10k 에러 발생

=> 동시에 연결된 커넥션 수 증가 (요청을 처리하기 위해 서버가 얼마나 많은 클라이언트와 연결 가능한가)

1. 커넥션이 많아져 프로세스가 많아짐

2. 메모리 부족으로 이어짐

3. CPU 부하(컨텍스트 스위칭 증가)

 

Nginx(event 기반 서버)

미스터 프로세스 <> 워커 프로세스의 구조로 이루어져있다

 

시간이 오래는 작업은 Thread Pool을 만들어서 처리하게 함(워커 프로세스에서 넘겨줌)

cpu 코어 갯수만큼 worker process 만듬

단점: 기능 추가를 시도했다 돌아가는 프로세스 정지, 개발자가 직접 개발 어려움, 윈도우에서 제대로된 성능을 발휘하지 못한다

할 수 있는 일

웹 서버, 로드 밸런서 , SSL 터미네이션, http 프로토콜을 사용해 캐싱 가능, HSTS,CORS처리, TCP/UDP 커넥션 부하 분산 HTTP/2

 

 

SSL 터미네이션: 클라이언트와 https 통신, 서버와 http 통신(복호화를 줄여 로직 처리를 좀 더 개선)

 

nginx 템플릿

https://github.com/h5bp/server-configs-nginx

 

출처: https://www.youtube.com/watch?v=6FAwAXXj5N0