Nginx
nginx는 Igor Sysoev라는 러시아 개발자가 C10K 문제를 해결하기 위해 개발한 웹 서버
- C10K 문제 - 동시에 10,000개의 연결을 처리하는 문제
- 기존의 Apache 웹서버는 프로세스/스레드 기반의 구조
- Apache는 http 요청이 올때마다 스레드나 프로세스를 새로 생성, 많은 수의 사용자가 동시 접속을 할 수록 CPU 부하가 높아짐
- 이는, 동시에 연결된 커넥션이 만 개 이상이 되면 하드웨어 성능과 관계없이 서버가 더 이상의 커넥션을 형성하지 못하는, C10K 문제를 발생
- 만 개까지 도달하지 않더라도 사용자가 늘어날 때마다 프로세스/스레드가 생성되므로 자원 낭비
- Nginx는 한 개 또는 고정된 프로세스만 생성 후, 비동기 이벤트 기반의 처리방식 구조로 프로세스/스레드 생성보다 더 적은 리소스로 처리가 가능
Nginx는 하나의 Master Process와 다수의 Worker Process로 구성되어 실행
- Master Process: 설정 파일 읽기, 유효성 검사,Worker Process를 관리
- Worker Process: 요청 처리
https://oliveyoung.tech/blog/2023-10-02/c10-problem/