Skip to main content

대규모 트래픽 해결 방안 1

시작하기에 앞서

주의

해당 블로그의 모든 문서는 학습한 내용을 제 방식으로 정리하여 작성하고 있습니다.
순수 창작물도 아니고, 틀린 내용이 있을 수 있으므로 참고하고 읽어주시면 감사하겠습니다.


서버 과부하 발생 원인

서버의 CPU 사용량이 80~90%에 도달하거나, 메모리가 부족해지면

계속해서 스와핑(Swapping)이 발생하면서 과부하 상태가 됩니다.

프로세스 스와핑이란 현재 메모리에서 하드디스크나 SSD와 같은 보조기억장치로 프로세스를 잠시 옮겨놨다가 필요에 따라서 메모리로 다시 가지고 오는 작업을 의미합니다.

모니터링

대규모 트래픽 발생으로 인한 서버 과부하의 해결 방법의 하나는 자원을 모니터링하는 방법이 있습니다.

AWS Auto Scaling과 같은 모니터링 툴을 사용해서, 서버의 자원이 임계치에 도달하면 CPU나 Memory와 같은 자원들을 자동으로 조정하도록 설정하는 것입니다.

모니터링이라고 해서 관리자가 계속해서 변동 사항을 확인하고 있을 필요는 없습니다. Slack과 같은 프로그램이랑 연동하여 필요한 시점에 메시지를 자동으로 전송하도록 하여 메시지 전송 알림을 받았을 때 확인하면 됩니다.

모니터링을 하게 되면 다음과 같은 이점이 있습니다.

  • 어떤 페이지에서 어떤 트래픽이 얼마나 발생했는지 확인할 수 있다.
  • 어떤 네트워크에서 병목현상이 일어났는지 확인할 수 있다.

즉, 어디에 어떻게 문제가 발생했는지 확인하기 수월해집니다.

이렇게 모니터링을 하게 되면 문제 발생 원인 파악과 해결에도 도움이 될 수 있지만, 이외에도 어떤 페이지가 활용도가 높고 낮은지에 대해서 파악하고 개선하는 것에 도움을 받을 수 있습니다.

예를 들어 A, B, C 페이지가 있다고 가정해보겠습니다. A와 B 페이지는 사용자가 많이 몰리는 반면에, C 페이지는 많이 몰리지 않는다고 한다면 C 페이지에 대해서 개선이 필요하다는 것을 쉽게 파악할 수 있는 것입니다.

로드 밸런싱

두 번째 해결 방법으로는 로드 밸런싱이 있습니다. 부하분산이라는 뜻으로 서버를 여러 대 두고 트래픽을 분산시키는 방법입니다. 한 대의 서버로 부하가 집중되지 않도록 트래픽을 관리할 수 있습니다.

그렇다면 어떤 방법을?

모니터링과 로드 밸런싱은 조합해서 사용할 수 있습니다. 서버를 여러 대를 두어 트래픽도 분산시키고, 각각의 서버에 대해서 모니터링하여 문제가 발생한 서버는 자동으로 자원을 조정하도록 하는 것입니다. 결론은 상황에 따라서 필요한 방법을 도입하면 될 것 같습니다.

참고 자료