락커스를 만져봤어요.

9475 단어 locust
개요
  • 그동안 Jmeter를 사용했지만 다른 부하 테스트 도구도 접하고 싶어 Lockust
  • 에 도전한다.
  • 어쨌든 시운전
  • 업무 수행 시 언제든지 업데이트
  • 참고 자료
  • https://docs.locust.io/
  • 옵션 목록
  • https://docs.locust.io/en/stable/running-locust-distributed.html#options
  • 환경 구조
  • 중앙 OS 기반 서버 구축
  • # pythonのバージョンを確認
    # 2020/01時点のサポートバージョンは「2.7, 3.5, 3.6, 3.7, 3.8」
    python --version
    > Python 2.7.5
    
    # pipがすでに入っていれば不要
    curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
    python get-pip.py
    pip --version
    
    # locustインストール
    python -m pip install locustio
    locust --version
    
  • 고부하 테스트를 하려면 file open 수
  • 도 주의해야 한다.
  • 300 요청의 유효한 테스트를 동시에 수행하려면 file open도 300 이상
  • 으로 설정해야 합니다
    # 確認
    ulimit -n
    > 65535
    
    # 変更したい場合
    vi /etc/security/limits.conf
    
    어쨌든 일단 움직이는 곳으로 갈게요.
    차리다
    locustfile.py
    from locust import HttpLocust, TaskSet, task, between, constant
    
    class UserBehavior(TaskSet):
        @task(1)
        def profile(self):
            self.client.get("/sample", verify=False)
    
    class WebsiteUser(HttpLocust):
        task_set = UserBehavior
        wait_time = constant(0)
    
  • verify=Falsehttps로 통신하는 중 오류가 발생하여 수여
  • python에 익숙하지 않아서 ssl에 대해 잘 몰라요...
  • path에 프로토콜이나 호스트가 기재되지 않음
  • 이후 UI로 입력
  • 부팅
    locust
    # これと一緒
    # locust -f ./locustfile.py
    
  • 8089 포트에서 UI 시작
  • Number of total users to simulate
  • 예상 사용자 수
  • 액세스 소스의 스레드 수로 간주
  • 대상rps=사용자 수/(응답 시간+time wait)
  • Hatch rate
  • 예를 들어 10으로 설정하면 사용자 수가 1초에 10개 증가
  • max는 "Number of total users to simulate"의 설정값
  • Host
  • 프로토콜 + 호스트 + 포트 지정
  • http://localhost:8080 또는
  • Start swarming에서 시작!
    Charts 태그를 보면 테스트 상황을 확인할 수 있습니다!

    master/slave 구성
  • locust는 마스터/slave를 사용하여 축소할 수 있음
  • 이후에 docker를 사용하여 마스터/slave
  • 를 관리합니다
    docker 준비
    설치 단계 생략
    다음 명령이 호출되었는지 확인하십시오
    docker-compose --version
    docker --version
    
    docker로single 구성
    Dockerfile
    FROM python
    
    RUN pip install locustio
    
    WORKDIR /locust
    COPY ./locustfile.py .
    
    CMD ["locust"]
    
    부팅
    docker run -d \
        -p 8089:8089 \
        --name locust locust
    
    # ストップ&削除
    # docker stop locust
    # docker rm locust
    
    다음은 docker-compose.
    docker-compose.yml
    version: '3'
    services:
      locust-single:
        build: .
        ports:
          - "8089:8089"
    
    부팅
    docker-compose up -d
    
    docker ps
    # CONTAINER ID        IMAGE                  COMMAND             CREATED             STATUS              PORTS                    NAMES
    # d836d979d4b5        locust_locust-single   "locust"            10 seconds ago      Up 9 seconds        0.0.0.0:8089->8089/tcp   locust_locust-single_1
    
    master/slave
  • 시동용 케이스 제작
  • 환경 변수를 통한 전환 모드
  • run.sh
    #!/bin/bash
    
    echo "mode: $MODE"
    
    if [ "$MODE" == 'master' ]; then
      locust --master
    elif [ "$MODE" == 'slave' ]; then
      locust --slave --master-host=locust-master
    fi
    
  • 수정 Docker file
  • ./run.sh
  • 내보내기
    Dockerfile
    FROM python
    
    RUN pip install locustio
    
    WORKDIR /locust
    COPY ./locustfile.py .
    COPY ./run.sh .
    
    ENTRYPOINT ["./run.sh"]
    
  • docker-compose.yml 수정
  • 슬레이브는 일단 3대
  • docker-compose.yml
    version: '2'
    x-locust-service: &locust-service
      build: .
    services:
      locust-master:
        <<: *locust-service
        ports:
          - "8089:8089"
        environment:
          MODE: master
      locust-slave-1:
        <<: *locust-service
        environment:
          MODE: slave
      locust-slave-2:
        <<: *locust-service
        environment:
          MODE: slave
      locust-slave-3:
        <<: *locust-service
        environment:
          MODE: slave
    
    시작!
    docker-compose -f docker-compose-master-slave.yml up -d
    # 開発時は毎回build
    # docker-compose -f docker-compose-master-slave.yml up -d --build
    

    slaves가 3이 되었습니다!!!

    좋은 웹페이지 즐겨찾기