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
'CS지식' 카테고리의 다른 글
스피링 부트 내장 톰캣 (0) | 2024.10.17 |
---|---|
락 (2) | 2024.10.10 |
InnoDB (0) | 2024.10.10 |
DB Index (0) | 2024.10.08 |
Cache & Redis (0) | 2024.10.07 |