서버 과부하 해결방법

김민식·2023년 12월 21일
0

Web

목록 보기
4/5
post-thumbnail

서버 과부하

  • 서버가 리소스를 소진하여 들어오는 요청을 처리하지 못할 때 발생
  • 이 때, 서버는 사용자의 웹요청을 처리하지 못해 응답없음이 뜸

해결방법

모니터링을 통한 자원 할당

"자원의 한계점 도달"로, 보통 서버의 CPU 사용량이 80-90%에 도달하거나 메모리가 부족해
계속해서 스와핑이 발생하면 과부하 상태가 됨

  • AWS 오토 스케일링
    • 서비스 이용불가능 상태 발생 이전 cloud watch가 계속해서 모니터링하여 서버 대수를 늘려주는 방법
    • AWS Auto Scaling은 애플리케이션을 자동으로 모니터링하고 자원의 용량을 자동으로 조정
  • netdata를 이용한 모니터링
  • 모니터링을 하는 이유
    • 어떤 페이지에 어떤 트래픽이 얼마나 발생했냐
    • 어떤 네트워크에서 병목현상이 일어났냐
    • 활용도가 낮은/높은 페이지를 파악 -> 서비스 개선

로드밸런서

  • AWS 오토스케일링은 빠르지만 구성에 시간이 걸리기 때문에 앞단에서 로드밸런서를 통해 트래픽을 분산해야함
  • 로드밸런서는 한 서버에 장애가 발생하면 로드 밸런서는 트래픽을 다른 기능 서버로 리디렉션하여 시스템 중단을 방지할 수 있음

서킷 브레이커

  • MSA에서 과부하를 방지하기 위해 사용되는 패턴, 시스템의 일부가 과부하되었을 때 자동으로 해당 부분을 차단하는 역할
    • 감지 : 특정 서비스나 리소스에 대한 요청 실패율이 설정된 임계값을 초과하면 감지
    • 차단 : 임계값을 초과하면 자동으로 해당 서비스나 리소스에 대한 요청을 일시적으로 차단
    • 복구 시도 : 설정된 시간이 지난 후, 서킷 브레이커는 자동으로 차단을 해제, 서비스 상태 확인
    • 장점 : 연속적인 에러 발생을 막아주며, 일부 서비스가 종료되더라도 다른 서비스들은 이상 없이 동작하게 만들 수 있으며, 사용자 경험을 높임

블랙스완 프로토콜

  • 예상치 못한 큰 이벤트나 요청이 서버에 과부하를 일으킬 때, 이를 감지하고 대응하는 시스템
    • 감지 : 시스템은 트래픽 패턴, 메모리 사용량, CPU 사용량을 지속적으로 모니터링
    • 대응 : 이상 징후가 감지되면 자동으로 트래픽을 조절하거나, 필요한 경우 일부 서비스를 일시적으로 중단
    • 복구 : 문제가 해결되면 서비스는 자동으로 정상 상태로 돌아감

구글의 블랙스완 대응 수칙


컨텐츠 관리

  • 불필요한 컨텐츠 제거
    • 조회쿼리 개선
  • CDN을 통한 컨텐츠 제공
    • CDN을 통해 사용자 가까이, 그리고 분산된 대규모 서버 네트워크를 기반으로 컨텐츠를 제공해서 메인 서버에 대한 부하를 줄임

CDN(Content Delivery Network) : 전 세계에 분산된 서버 네트워크를 사용하여 사용자에게 웹 콘텐츠를 제공, 이 네트워크는 사용자에게 가까운 위치에 서버를 두어 콘텐츠 접근 속도를 향상시킴

  • 컨텐츠 캐싱
    • 네트워크 트래픽을 해결하는 가장 좋은 방법은 해당 트래픽이 발생하지 않는 것
    • 브라우저 캐시(쿠키, 로컬저장소, 세션저장소)를 통해 해당 요청에 관한 항목을 캐시에서 읽어 네트워크 요청에 관한 비용을 모두 제거
  • 컨텐츠 압축
    • gzip/Brotli를 통해 70% 정도까지 압축
    • 압축을 풀기위해 서버에서 자원을 사용하는 양까지 고려해야함
    • 보통은 압축하면 좋음
  • 컨텐츠의 우하한 저하(미리 준비된 응답)
    • 정적 텍스트 페이지를 제공
    • 검색 비활성화 or 더 적은 수의 검색 결과를 반환
    • 필수적이지 않은 기능 비활성화


출처 및 참고 : https://www.inflearn.com/course/%EA%B0%9C%EB%B0%9C%EC%9E%90-%EB%A9%B4%EC%A0%91-cs-%ED%8A%B9%EA%B0%95#

profile
BE Developer

0개의 댓글