Huge Traffic Handling (대규모 트래픽 처리)

배고픈 징징이 ㅣ 2024. 1. 16. 15:55

1. 대용량 트래픽 장애 발생 원인

사용자가 많아질 수록 서버에 많은 HTTP Request가 수신된다.
많은 Request는 Traffic이 많아졌다는 의미이다.
Request는 Queue를 통하여 Tread Pool에 할당되는데 Thread Pool Size를 초과하는 Request는 Queue에서 대기하게 되는데, Thread는 무한하지 않으므로 Thread Pool Size를 초과하는 Traffic이 지속적으로 발생하면 서버의 지연시간은 계속 증가하게 된다.

 

  1. Memory Overflow
    모든 Request를 동시에 처리할 수 없기 때문에 결국 Request를 Queue에 넣어 순차적으로 처리하게 된다.
    여기서 Queue는 메모리에 존재하기 때문에 Request를 Queue에 계속 넣다보면 Memory Overflow가 발생할 수 있다.

  2. Queue Overflow
    Request는 Queue를 통하여 Tread Pool에 할당되는데 Thread Pool Size를 초과하는 Request는 Queue에서 대기하게 되는데, Thread는 무한하지 않으므로 Thread Pool Size를 초과하는 Traffic이 지속적으로 발생하면 Queue Overflow가 발생할 수 있다.

  3. Timeout
    Request에는 대개 Timeout이 설정되어 있는데, 보낸 Request가 다른 요청을 처리하느라 Timeout이 발생하는 경우

 

반응형

 

2. 해결 방법

  1. Scale-Up
    Server의 스펙을 물리적으로 높이는 방법이다.
    CPU, 메모리, SSD 등 서버의 스펙을 높이는 수직 확장 방식(Vertical Scaling)

    장점
    - 구축 설계가 쉽다.
    - 여러 대의 서버에 대이터 일관성을 유지해야하는 작업이 불필요하다.
    - 별도의 비용발생이 없다.

    단점
    - 서버 한대에 모든 부하가 집중되므로 장애 발생시 치명적이다.
    - 용량, 성능 확장에 제한이 있다.
    - 비싸다.
    - 기존의 서버를 교체함으로써 서비스를 이용할 수 없는 다운타임이 불가피하다.

  2. Scale- Out
    비슷한 스펙의 서버들로 로드밸런싱을 통한 병렬처리가 가능한 수평 확장 방식(Horizontal Scaling)

    장점
    - 서버 한 대에 장애가 발생하더라도 다른 서버로 서비스 제공 가능
    - 지속적인 확장성
    - 분산 처리로 인한 장애 가능성이 낮아짐
    - 저렴하다.

    단점
    - 설계 관리의 복잡성
    - 관리 비용의 증가
    - 모든 서버의 데이터 일관성을 유지해야한다.

 

 

 

반응형

'Java' 카테고리의 다른 글

디자인 패턴(Design Pattern)  (0) 2024.05.01
Long과 long의 차이 & 참조 타입과 원시 타입  (0) 2024.01.17
Process & Thread / Thread.run() & Thread.start()  (0) 2023.04.19
Excel Download With POI  (0) 2023.03.21
Atomic  (0) 2023.02.27