Apache Benchmark + GNUPlot : 웹 서버의 성능 측정 및 그래프

사용 여부는 중요하지 않습니다. Nginx에, 아파치, Lighttpd 또는 기타 웹 서버가있는 네트워크 관리자는 어느 시점에서 웹 서버가 주어진 수의 쿼리에 얼마나 빨리 응답하는지 알고 싶어 할 것입니다.

관리 서비스-서버 관리 -e1368625038693

Apache 벤치 마크 + GNUPlot

이번에는 Apache 벤치 마크이름에 'apache'가 포함되어 있지만 Apache 성능 측정뿐만 아니라 Nginx 및 기타 용도로도 사용할 수 있습니다. 실제로는 성능을 측정하는 데 사용할 것입니다. Nginx에.

우리는 또한 사용할 것입니다 지누플롯, 다음과 같은 몇 줄의 그래프를 만드는 데 도움이됩니다.

결과

Apache Benchmark 및 GNUPlot 설치

Apache Benchmark는 Apache 패키지를 설치 한 후 사용할 수있는 도구로, 같은 이름의 패키지를 설치하면 GNUPlot을 사용할 수 있습니다. 그럼 ...

Debian, Ubuntu 또는 이와 유사한 배포판에서 :

sudo apt-get install apache2 gnuplot

ArchLinux 또는 파생물과 같은 배포판에서 :

sudo pacman -S apache gnuplot

Apache 패키지를 설치하기 만하면됩니다. 시작하거나 다른 것을 구성 할 필요가 없습니다. 설치만으로 충분합니다.

Apache Benchmark 사용

우리가 할 일은 특정 사이트에 여러 그룹 (100 개에서 20 개)의 특정 요청 수 (20 개)를 보내는 것입니다. 결과를 .csv 파일 (result.csv)에 저장 한 다음 GNUPloit로 처리합니다. 행은 다음과 같습니다.

ab -g resultados.csv -n 100 -c 20 http://nuestro-sitio-web.com/

측정 할 사이트의 URL에 최종 /를 입력하는 것이 매우 중요합니다.

다음은 네트워크에서 사이트를 테스트 할 때 표시되는 출력 또는 로그입니다.

이것은 ApacheBench, 버전 2.3입니다. <$ 개정 : 1638069 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Apache Software Foundation에 라이선스 부여됨, http://www.apache.org/ Benchmarking gutl.jovenclub.cu (인내심) ..... 완료

서버 소프트웨어 : nginx 서버 호스트 이름 : gutl.jovenclub.cu 서버 포트 : 80

문서 경로 : /
문서 길이 : 206 바이트 동시성 수준 : 20 테스트 소요 시간 : 0.101 초 전체 요청 : 100 실패한 요청 : 27 (연결 : 0, 수신 : 0, 길이 : 27, 예외 : 0) 비 -2xx 응답 : 73 총 전송 : 1310933 바이트 HTML 전송 : 1288952 바이트
초당 요청 : 993.24 [# / 초] (평균)
요청 당 시간 : 20.136 [ms] (평균) 요청 당 시간 : 1.007 [ms] (모든 동시 요청에서 평균) 전송 속도 : 12715.49 [KB / 초] 수신 연결 시간 (ms) 최소 평균 [+/- sd] 중앙값 최대 연결 : 0 1 0.2 1 1 처리 : 1 17 24.8 4 86 대기 : 1 15 21.5 4 76 합계 : 1 18 24.8 5 87 특정 시간 내에 제공된 요청 비율 (ms) 50 % 5 66 % 6 75 % 22 80 % 41 90 % 62 95 % 80 98 % 87 99 % 87
100 % 87 (가장 긴 요청)

나는 내가 가장 중요하다고 생각하는 것을 빨간색으로 표시했습니다.

  1. 테스트중인 서버의 데이터와 문제의 URL입니다.
  2. 초당 요청 수입니다.
  3. 서버가 가장 오래 걸리는 요청, 즉 응답하는 데 가장 오래 걸린 요청에 응답하는 데 걸린 시간 (밀리 초)입니다.

이 정보를 통해 서버가 해당 요청 량에 응답하는 데 걸리는 시간을 파악한 다음 더 나은 캐시 시스템을 추가하고 사용하지 않는 모듈을 비활성화하는 등의 작업을 수행하고 테스트를 다시 실행할 수 있습니다. 성능이 향상되었는지 여부를 확인하십시오.

연속 된 두 테스트의 결과가 거의 동일하지 않기 때문에 여백과 같은 것을 만들 수 있도록 테스트를 2 ~ 3 회 실행하는 것이 좋습니다.

기타 유용한 Apache Benchmark 옵션 또는 매개 변수 :

-k -H '수락 인코딩 : gzip, deflate' :이 ab는 서버가 구성한 캐시 및 압축을 허용하므로 시간이 더 짧아집니다.

-f urls.txt : 따라서 사이트의 색인을 테스트하는 대신 해당 파일에 지정한 URL에 대해 테스트를 수행합니다.

어쨌든 ... 좀 봐 남자 ab 당신이 볼 수 있도록.

결과를 그래프로 표시 :

이 출력물을 이미지, 즉보다 시각적 인 매체에 넣고 관리자가 이해할 수있는 모든 것입니다. 이전에 말했듯이이를 위해 사용할 것입니다. 지누플롯

results.csv 파일이있는 동일한 폴더에 있습니다 (위의 명령으로 방금 생성했습니다.) gnuplot.p라는 파일을 생성 할 것입니다.

nano plot.p

그 안에 다음을 넣을 것입니다.

set terminal png size 600 set output "results.png"제목 설정"100 요청, 20 동시 요청 "크기 비율 0.6 설정 그리드 및 설정 xlabel"요청"ylabel 설정"응답 시간 (ms)"음모"results.csv"줄 제목과 함께 9 개의 부드러운 sbezier 사용"gutl.jovenclub.cu"

항상 확인해야 할 사항을 빨간색으로 표시했습니다. 즉, 위에서 아래로 :

  1. 생성 할 이미지 파일의 이름
  2. 총 및 동시 요청 수입니다.
  3. 방금 생성 한 파일의 이름입니다.
  4. 우리가 작업하는 도메인.

입력 한 후 저장하고 종료합니다 (Ctrl + O 다음 Ctrl + X), 다음을 실행합니다.

gnuplot plot.p

그리고 짜잔, 원하는 이름으로 그래프를 생성합니다.

결과 2

끝!

Apache Benchmark에는 훨씬 더 많은 옵션이 있으며 성능 테스트를 더욱 완벽하게 만드는 데 사용할 수있는 많은 조합도 있습니다.

하지만 이것이 기본이었습니다 😉

즐기십시오!


코멘트를 남겨주세요

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드가 표시되어 있습니다 *

*

*

  1. 데이터 책임자 : Miguel Ángel Gatón
  2. 데이터의 목적 : 스팸 제어, 댓글 관리.
  3. 합법성 : 귀하의 동의
  4. 데이터 전달 : 법적 의무에 의한 경우를 제외하고 데이터는 제 XNUMX 자에게 전달되지 않습니다.
  5. 데이터 저장소 : Occentus Networks (EU)에서 호스팅하는 데이터베이스
  6. 권리 : 귀하는 언제든지 귀하의 정보를 제한, 복구 및 삭제할 수 있습니다.

  1.   시스코

    흥미로운 아파치 벤치 마크, gnuplot에 대해 몰랐습니다. 출력 스타일을 수정할 수 있습니까? 나는 공식적인 보고서를 말한다.

    칠레에서 인사드립니다.

    1.    KZKG ^ 가아라

      예, gnuplot에 대한 많은 구성이 있습니다 .Google에서 검색하여 사용하기에 충분히 진지하거나 전문적인지 확인하십시오. 그게 모든 사람의 취향이기 때문입니다 🙂

  2.   Wolf119

    음, 지금 실행중인 가상 아파치 서버에서 테스트 해 보겠습니다. GUTL과 관련하여 80 개의 요청에서 매우 빠르게 발생하므로 100ms는 그렇지 않습니다. 아무 것도 없지만, 10 대 70 대 80 대 80 대에 비해 90 회 더 많은 요청을 제공하는 높은 수치가 내 관심을 사로 잡습니다.

    1.    KZKG ^ 가아라

      동시에 참석할 대기열 또는 최대 스레드 수 때문이어야합니다. 그러나 나는 gzip없이, deflate없이, 캐시 또는 아무것도없이 테스트를했다 😉

  3.   찰리 브라운

    특히 GNUPlot의 사용에 매우 흥미 롭습니다. 내가보기에 거의 모든 데이터 세트에서 그래프를 생성하는 데 사용할 수 있습니다.

    1.    KZKG ^ 가아라

      예, 물론 쉼표 나 이와 유사한 것으로 구분 된 파일에 데이터를 전달하고 구성 파일에서 처리하는 방법을 알려주고 짜잔

  4.   아돌 포

    안녕하세요, 저는 항상이 블로그를 읽는데 시간을 보내지 만 어떤 기사에도 댓글을 한 적이 없으며 좋은 기회 인 것 같습니다.
    제가 여러분과 공유하고 싶은 것은 Apache Bench가 순차적 시간 대신 ttime (총 시간)을 사용하여 결과를 정렬하기 때문에 이러한 유형의 그래프가 잘못 해석 될 수 있다는 것입니다. 데이터는 여전히 사실이지만 그래프는 우리가 원하는 것을 보여주지 않을 것입니다.
    여기에 내가 읽은 링크를 남깁니다.
    http://www.bradlanders.com/2013/04/15/apache-bench-and-gnuplot-youre-probably-doing-it-wrong/

    인사말.

  5.   휴고

    Apache Benchmark는 다중 코어가있는 컴퓨터에서 HTTP 서버의 성능을 측정하는 가장 좋은 도구가 아닙니다. 또한 100 개의 동시 연결이있는 20 개의 요청 만 매우 약한 테스트입니다.보다 현실적인 것은 1,000 개의 동시 연결이있는 10,000 또는 100 개의 요청입니다 ( Nginx는 초당 10,000 개 이상의 요청을 처리 할 수있는 애플리케이션 중 하나로 알려져 있으며,이를 위해 Apache와 달리 멀티 코어 컴퓨터 용으로 설계되고 더 빠른 epoll을 사용하는 weighttp와 같은 도구를 사용하는 것이 좋습니다. 단일 스레드와 덜 효율적인 이벤트 처리 메커니즘을 사용하는 벤치.

    내 요점을 알려면 서버에 4 개의 코어 만 있다고 가정합니다.

    weighttp -n 10000 -c 100 -t 4 -k "http://our-website.com/"

  6.   신앙

    안녕하십니까,
    gnuplot으로 그래프 (CSV에서)를 그릴 때 다음과 같은 오류가 발생합니다. 해결 방법을 알려주시겠습니까?

    "Plot.p", 8 행 : 경고 : 유효한 포인트가없는 데이터 파일 건너 뛰기

    줄 제목이«AB-localhost / web»인 9 개의 부드러운 sbezier를 사용하여«graph.csv»플롯
    ^
    "Plot.p", 8 행 : x 범위가 잘못되었습니다.

    gnuplot을 사용하여 HTML 페이지도 생성 할 수 있습니까?