(3) [10분 테코톡] 🤫 피케이의 Nginx - YouTube
Nginx(2002) vs Apache Http Server Project(1995)
만개 - 동시에 연결된 커넥션 수 != 초당 요청 처리수(
Keep-Alive : timeout 5
1999년 C10K문제( 동시연결된 커네셕수가 만이 넘어가면 문제가 나타나기 시작)가 발생하는데
이것은 아파치 서버 구조상의 문제로 하드웨어적으로 해결하려 했으나(Context Switching) 한계가 있었다.
수많은 동시 커넥션을 감당하기에는 아파치서버 구조상 프로세스가 생기면 계속 만들어 메모리 부족 현상이 나타나고,
그러나면 프로세스가 차지하는 양이 늘어나 무거운 프로그램이 되고,
CPU부하가 늘어나게 되어 부적합
Context Switching -> 하드웨어는 발전해서 문제 없었다.
Nginx는 아파치서버가 가진 구조적 한계를 극복하기 위해 태어났다.
Nginx 는 어떻게 수많은 프로세스를 감당할까?
Nginx는 master process에서 worker process생성된다.
실제로 일하는 녀석은 worker process 로 keep-alive 동안 실행된다.
커넥션 형성 요청처리를 이벤트라고 부른다.
이벤트는 커널이 큐에 담긴상태에서 worker process에서 처리할 때까지 비동기 방식으로 대기
worker process 는 하나의 스레드로 이벤트를 처리해 나간다.(아래 네모칸이 큐이다.)
worker process는 스레드가 오래 걸린 것 같은면 스레드 풀로 보내서 따로 처리해서 전체적인 lock 현상을 방지한다.
이런 worker 프로세스는 cpu의 코어개수만큼 생성
cpu의 context switching 사용을 줄인다.
NGINX 의 단점은 개발자가 모듈을 만들기 힘들다는 것만 있고, 잚못하면 worker process를 종료시켜버릴수 있다.
나머지 장점은 동시 커넥션 양 최소 10배 증가, 동일한 커넥션 수일때 속도 2배향상한다. (동적설계변경으로 가벼움)
스마트폰의 대중화이후 동시점유율 필요성이 늘어서 NGINX 점유율이 늘어났다.
NGINX는 윈도우에서 잘 돌아가지 않는다.
이 두서버는 보완관계이다.
아파치는 과거 웹서버의 호환성,확장성 문제를 해결했고,
NGINX는 동시커넥션 문제를 해결했다.
SSL , 캐싱처리도 할수 있어 NGINX가 서버 부하를 줄인다.
NGINX 템플릿~!
'4차산업혁명의 일꾼 > Java&Spring웹개발과 서버 컴퓨터' 카테고리의 다른 글
우아한 테크코스 TCP/IP & DNS (0) | 2023.06.23 |
---|---|
우아한테크코스 - 스프링과 스프링부트 그리고 스프링이벤트 (0) | 2023.06.23 |
구글 클라우드 GCP (0) | 2023.06.23 |
우아한테크코스 - Forward Proxy , Reverse Proxy , Load Balancer (0) | 2023.06.22 |
우아한테크코스 10분톡 - JPA와 JDBC 정리 (0) | 2023.06.21 |