동료가 자신 있게 만든 앱을 Tsung으로 습격해 봤어요.

4231 단어 부하 테스트Tsung
이틀 연속 프레임을 확보했는데 금방 실패해서 후회했어요.품질이 매우 낮아서 떳떳하지 못하다.
그러자 달력 첨부 첫날 동료가 "Common Lisp로 비즈니스 개선 앱을 만들었다"며 즐거워하는 듯 후회한 나머지 습격을 시도했다.네, Tsung에 있어요.
객체 정보
상세한 내용은 상술한 보도를 보시고 먼저 개요를 정리해 주십시오.
  • 웹훅을 통해 GiitHub에서 이벤트를 받아들여 슬랙에 메시지를 던지는 응용 프로그램
  • 공용 Lisp 방식의 웹 서비스
  • 이벤트 구동을 사용하는 느낌libev
  • 방문한 URL에 따라 HTML 페이지(첫 페이지 등)로 돌아가기
  • 사용자 등록 & 일람화면
  • 데이터베이스는 PostgreSQL
  • 을 사용합니다.
    테스트 환경
    웹 응용 프로그램은 다음 환경에서 로드 테스트를 수행합니다.Zabbix는 서버의 리소스 사용량을 수집하고 기록하기 위해 사용됩니다.

    일단 첫 페이지.
    첫 페이지는 동적 내용을 포함하지 않은 제작이다.
    총 1만 명의 사용자가 각각 10회씩 방문한다.그럼 잘 잘릴 수 있을까요?
    어떻게 됐어요?
    초당 4400시에 방송되는 프로그램은 이미 끝났다.응답 시간도 최대 3천초도 안 되는 호조에 달했다.


    Zabbix의 부하도 거의 증가하지 않았다.


    사용자 목록을 표시하는 페이지를 습격 시도
    첫 페이지가 시원하게 찢어졌으면 같은 조건으로 사용자 목록을 표시하는 페이지를 습격한다.
    했어...!?
    나의 요구는 초당 250개에서 300개로 떨어졌다.반응 시간도 5초~15초 정도 기다려야 한다.


    오류도 발생했다.HTTP 오류는 발생하지 않았지만 연결하는 동안 오류가 발생했습니다.

    대기 처리 시간이 증가했습니다. 대기 기간에 시간 초과가 발생하는 경우가 증가했습니까?
    그러나 Zabbix의 CPU 부하 차트를 보면 큰 부하가 표시되지 않습니다.

    데이터베이스의 CPU는 한가해 보이지만 네트워크에는 해당하는 전송량이 있다.


    고찰하다
    이벤트로 구동된 웹 서버가 실행 중이고 CPU에 부하를 가하는 방법으로 추정하면 이 프로그램은 단식적으로 붉은색일 것이다.
    기계적으로 단식홍이 1핵에 분배되고 Disk I/O가 발생하지 않는다고 가정하면 시스템의 부하성에 대해 매우 안심할 수 있다.자원을 다 먹지 못할 것 같다.
    다시 말하면 이 프로그램은 자원을 효과적으로 이용할 수 없다.
    단지 매우 간단하고 계산하기 쉬워서 한 서버에서 여러 프로그램을 실행하면 문제를 해결할 수 있다.
    개선 방안
    비록 비용이 좀 많지만 Docker 컨테이너로 여러 응용 프로그램을 구동할 수 있고 비용이 마음에 들면 여러 프로그램을 직접 시작할 수 있다.
    만약 모든 요청을 1초 정도 처리해야 한다면 부하 균형기나 역방향 에이전트를 사용하십시오프로그램당 300개의 요청/초만 제한하면 너무 무겁지 않다(요구수가 제한치를 초과하면 요청이 거부되기 때문에 실제 숫자가 더 높다).
    데이터베이스의 네트워크가 1Gbps라고 가정하면 데이터로서 여유가 있다.
    LB에는 2개의 코어, OS에는 1개의 코어를 사용하고 나머지 13개의 코어는 웹 애플리케이션에 할당할 수 있다.이 조건이라면 초당 3900개의 요청을 처리할 수 있을 것으로 보인다.
    현재 응용 프로그램 중 데이터베이스에 연결된 연결은 하나뿐이지만 연결된 응용 프로그램도 5개로 늘어날 수 있다.하지만 데이터베이스 처리 시간이 많지 않은 것 같아서 여가 시간을 활용하면 효과가 있을지 모르겠다.
    총결산
    나는 이 응용 프로그램의 특징을 조금 보았다.
  • 요청의 증가에 대해 상승하는 부하에 상한이 있음
  • 용량을 초과하면 HTTP 오류가 아니므로 연결할 수 없음
  • 로드 밸런서와 결합하여 수평 눈금과 성능을 향상시킬 수 있음
  • 요청이 증가하여 프로세스가 쉽게 붕괴되지 않음
  • 최후
    실제로 동료로부터 소재를 제공받아 동료의 협조를 받아 실험을 진행했다.
    하지만 개인적으로 과정 붕괴 등 화려한 일은 일어나지 않아 달갑지 않았다.

    좋은 웹페이지 즐겨찾기