Linux 데이터 복사 도구

6534 단어 nginx
일부 병행 요구 가 있 는 업무, 특히 외부 트 래 픽 을 연결 할 때 제품 이 출시 되 기 전에 반드시 해 야 하 는 것 은 압력 테스트 이지 만 일반적인 압력 테스트 는 모든 상황 을 커버 할 수 없다.gemeter, ab, webbench, httpload 의 경우 시 뮬 레이 션 을 통 해 요청 한 압력 측정 도 구 는 특정한 매개 변수 만 보 낼 수 있 고 일부 매개 변수 이상 으로 인 한 프로그램 처리 이상 은 고려 할 수 없 기 때문에 실제 데 이 터 를 복사 하고 온라인 업무 에 영향 을 주지 않 는 도구 가 필요 합 니 다.데이터 복제 도 구 는 매우 많다. 예 를 들 어 Gor, tcpreplay, tcpcopy 등 이다. 이런 도 구 는 실제 장면 에 부합 되 고 실제 데 이 터 를 모 의 할 수 있 으 며 데이터 의 확대 나 축 소 를 지원 하여 프로그램의 병목 과 잠재 적 인 문 제 를 쉽게 테스트 할 수 있다.
몇 가지 데이터 복사 도구:
  • gor: https://github.com/buger/goreplay
  • tcpreplay: https://github.com/appneta/tcpreplay
  • tcpcopy: https://github.com/session-replay-tools/tcpcopy
  • Nginx 모듈 ngxhttp_mirror_module, Nginx 1.13.4 에서 도입 되 기 시 작 했 습 니 다. 사용 하기 전에 nginx 버 전
  • 을 확인 하 십시오.
    Nginx 모듈 ngxhttp_mirror_module
    설정 은 다음 과 같 습 니 다:
    server {
        listen 8080;
        access_log /home/work/log/nginx/org.log;
        root html/org;
    }
    
    server {
        listen 8081;
        access_log /home/work/log/nginx/mir.log ;
        root html/mir;
    }
    
    upstream backend {
        server 127.0.0.1:8080;
    }
    
    upstream test_backend {
        server 127.0.0.1:8081;
    }
    
    server {
        listen       80;
        server_name  localhost;
    
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
    
        location / {
            mirror /mirror;
            proxy_pass http://backend;
        }
    
        location /mirror {
            internal;
            proxy_pass http://test_backend$request_uri;
        }
    
    }
    

    유량 확대, 두 개의 mirror 를 설정 하면 됩 니 다.
    location / {
            mirror /mirror;
            mirror /mirror;
            proxy_pass http://backend;
        }
    

    사용 하 는 것 은 매우 편리 하지만 온라인 nginx 는 보통 하나의 업무 만 탑재 하 는 것 이 아니 라 nginx 설정 을 수정 한 후에 nginx -s reload 이 효력 을 발생 시 켜 야 합 니 다. 이런 조작 은 온라인 에서 최대한 피해 야 합 니 다.
    gor https://github.com/buger/goreplay
    고 르 개술
        Gor 는 Golang 으로 작성 한 HTTP 실시 간 데이터 복사 도구 입 니 다.기능 이 더욱 강하 고 데이터 의 확대, 축소, 주파수 제한 을 지원 하 며 요청 을 파일 에 기록 하여 재생 과 분석 을 편리 하 게 할 수 있 으 며 ElasticSearch 와 통합 하여 데 이 터 를 ES 에 저장 하여 실시 간 으로 분석 하 는 것 도 지원 합 니 다.
    다운로드 설치, 컴 파일 된 바 이 너 리 파일 을 다운로드 하여 직접 사용 할 수 있 습 니 다.
    > wget https://github.com/buger/goreplay/releases/download/v0.16.1/gor_0.16.1_x64.tar.gz
    > tar xzvf gor_0.16.1_x64.tar.gz
    

    파일 로 데이터 복사
    데 이 터 를 파일 로 복사 한 후에 다시 재생 할 수 있 습 니 다.재생 할 때, 유량 은 원래 의 시간 간격 을 유지 할 것 이다.만약 당신 이 백분율 로 속 도 를 제한 했다 면, 재생 속 도 는 상응 하 게 증가 하거나 감소 할 것 입 니 다.이런 속도 제한 이 있 으 면 gor 는 압력 테스트 를 할 수 있다.
    #write to file
    gor --input-raw :80 --output-file requests_origin.gor
    
    #read from file
    gor --input-file requests_origin.gor --output-http "http://localhost:8081"
    

    타임 스탬프 이름 으로 파일 을 녹화 할 수 있 습 니 다. 기본적으로 파일 은 '블록' 에 따라 저 장 됩 니 다. 즉, 파일 크기 가 상한 선 에 도달 한 후 접 두 사 를 추가 하고 다른 파일 을 새로 만 듭 니 다. 다음 과 같 습 니 다.
    gor --input-raw :80 --output-file %Y%m%d.gor
    #append false
    
    20140608_0.gor
    20140608_1.gor
    20140609_0.gor
    20140609_1.gor
    

    기본 값 은 '블록' 으로 파일 을 저장 하 는 방식 이지 만 매개 변 수 를 설정 할 수 있 습 니 다. - output - file - append, 사용 후 다음 과 같 습 니 다.
    gor --input-raw :80 --output-file %Y%m%d.gor --output-file-append
    #append true
    
    20140608.gor
    20140609.gor
    

    시간 포맷 파일 이름 설정 설명:
    %Y: year including the century (at least 4 digits)
    %m: month of the year (01..12)
    %d: Day of the month (01..31)
    %H: Hour of the day, 24-hour clock (00..23)
    %M: Minute of the hour (00..59)
    %S: Second of the minute (00..60)
         %Y%m%d%H
    

    유량 재생
    현재 이런 방식 은 'input - file' 만 지원 하고 재생 속 도 를 백분율 로 만 제어 할 수 있다.이 재생 속도 비율 은 input 에 대비 되 어 있 음 을 주의 하 세 요.녹 음 된 데이터 의 시간 스탬프 에 따라 재생 하 는 것 이다.
    2 배 속도 로 재생 gor --input-file "requests_origin.gor|200%" --output-http "http://localhost:8081""input - fly" 가 여러 파일 이 라면 정규 로 일치 할 수 있 습 니 다. gor --input-file "requests_origin*.gor|200%" --output-http "http://localhost:8081"다음 설정 매개 변수 에 맞 춰 압력 테스트 --input-file-loop 를 더 잘 할 수 있 습 니 다.분 의 단 위 는 m 이다.
    Gor 상용 명령
    간단 한 HTTP 데이터 복사 --exit-after 30sHTTP 트 래 픽 복사 주파수 제어 (초당 10 개 이상 요청 가 져 오기) > gor --input-raw :80 --output-http "http://localhost:8081"HTTP 데이터 복사 축소 > gor --input-tcp :28020 --output-http "http://localhost:8081|10"HTTP 트 래 픽 을 로 컬 파일 에 기록 > gor --input-raw :80 --output-tcp "http://localhost:8081|10%"HTTP 데이터 재생 과 압력 측정 > gor --input-raw :80 --output-file requests_origin.gorHTTP 데이터 필터 복제
    > gor --input-raw :8080 --output-http http://localhost:8081 --output-http-url-regexp ^www.
    

    데이터 복사 인자 사용자 정의
    > gor --input-raw :80 --output-http http://localhost:8081 --http-allow-method POST --http-set-header 'User-Agent: Gor' -output-http-workers=1 -http-allow-url test.php
    

    데이터 복사 두 부 를 다른 테스트 서비스 로 복사 합 니 다.
    > gor --input-tcp :8080 --output-http "http://localhost:8081" --output-http "http://localhost:8082"
    

    데이터 를 부하 균형 처럼 다른 서버 에 분배 하 다
    > gor --input-tcp :8080 --output-http "http://localhost:8081" --output-http "http://localhost:8082" --split-output true
    

    Gor 설정 매개 변수
    > gor --help
    
    -http-allow-header value
    gor --input-raw :8080 --output-http localhost:8081 --http-allow-header api-version:v1.1
               http  ,            ,    
    
    -http-allow-method value
    gor --input-raw :8080 --output-http localhost:8081 --http-allow-method GET
                    http    ,           .
    
    -http-allow-url value
    gor --input-raw :8080 --output-http localhost:8081 --http-allow-url ^www
               url,           url,          
    
    -http-disallow-header value
    gor --input-raw :8080 --output-http localhost:8081 --http-disallow-header "User-Agent: Replayed by Gor"
               http  ,           
    
    -http-disallow-url value
    gor --input-raw :8080 --output-http localhost:8081 --http-disallow-url ^www
               url,        ,     
    
    -http-set-header value
    gor --input-raw :8080 --output-http localhost:8081 --http-set-header 'User-Agent: Gor'
         ,         
    
    -http-set-param value
    gor --input-raw :8080 --output-http localhost:8081 --http-set-param api_key=v1.1
          ,         
    
                https://github.com/buger/goreplay/wiki

    작성 자: JouyPub 링크:https://www.jianshu.com/p/03f74521c592 출처: 간 서 간 서 저작권 은 작가 의 소유 이 며, 어떠한 형식의 전재 도 작가 에 게 연락 하여 권한 을 수 여 받 고 출처 를 밝 혀 주 십시오.

    좋은 웹페이지 즐겨찾기