2013년 1월 30일 수요일

TCP 응답속도를 체크하여 성능 측정을 해보자.

네트워크 트래픽의 요청과 응답의 지연되는 속도를 계산하여 퍼포먼스 성능 개선에 이용할 수 있는 'tcprstat' 도구를 소개한다. tcprstat 는 Percona 에서 개발한 것으로 무료로 사용할 수 있다. 출력되는 내용은 *NIX 시스템에서 사용하던 vmstat, iostat 와 비슷한 형태이다.
tcprstat 는 tcpstat 도구와 비슷하기도 하지만, 이것은 응답 시간 측정에 포커스를 두고 개발되어있으므로, 전체 네트워크 트래픽에 대한 것은 반영되어 있지 않다.

파일은 다음 경로에서 다운로드 받을 수 있다:
https://launchpad.net/tcprstat

바이너리 64비트 버전:
http://github.com/downloads/Lowercases/tcprstat/tcprstat-static.v0.3.1.x86_64

실행하면 다음과 같은 형태로 출력된다.

# ./tcprstat -p 27017 -t 1 -n 0
timestamp count max min avg med stddev 95_max 95_avg 95_std 99_max 99_avg 99_std
1355270619 669 3116 202 298 290 143 445 284 84 475 291 88
1355270620 727 719 200 263 227 73 424 253 57 454 261 63
1355270621 714 802 201 286 291 81 434 276 69 448 283 73
1355270622 720 570 201 280 271 45 367 275 30 387 279 34
1355270623 729 2441 261 282 270 92 361 273 20 379 277 25
1355270624 713 906 261 290 273 53 371 282 29 390 286 32
1355270625 718 759 261 287 273 47 369 280 29 399 284 33
^C1355270626 419 811 263 298 274 58 374 292 42 388 295 47

-n 을 통해 얼마동안 반복할지 정의한 것으로 0은 무한대를 뜻한다. -t 로 1초마다 측정하고 -p 로 포트번호를 지정하였다. 응답된 쿼리 시간과 종료시간 정보를 포함하고 있다. 각 컬럼의 응답시간은 마이크로세컨드 단위이며, 95/99th percentile 정보도 포함되어 있다. 95 퍼센트의 평균 응답값이 계산된다면, 상위 5%는 제외되는 것으로 자세한 내용은 아래 참고를 살펴보기 바란다.

tcprstat 의 위키페이지에서 소개하고 있는 예를 살펴보면,

# tcprstat -f '%M\t%95M\t%99M\n' -p 3306 -t 1 -n 0
max 95_max 99_max
31221 411 3001
52721 495 2828
12173 507 1513

응답시간이 계산되어 출력되는데 처음 가장 긴 응답시간은 31221 마이크로세컨드 이다. 95% 응답시간은 411 마이크로세컨드 이하이며 99%는 3001 이다.

가장 기본적인 옵션은 -p, -i, -n 정도이며 다음과 같은 포맷코드를 이용하여 출력을 정의할 수 있다.


Format CodeHeaderDefaultMeaning
%ncountyCount of requests that completed during this iteration
%aavgyAverage response time
%ssumySum of response times
%xsqsSum of squares of response times
%mminyMinimum response time
%MmaxyMaximum response time
%hmedyMedian response time
%SstddevyStandard deviation of response times
%vvarVariance of response times
%Iiter#Iteration number
%telapsedSeconds elapsed since the first iteration
%TtimestampyUnix timestamp
%%A literal %
\tA tab character
\nA newline character
95,99Adds a prefixyA percentile indicator; see later in this section for more


이외 -r 옵션을 이용해 PCAP 파일을 바로 분석할 수도 있다. 여러분들이 운영하는 서비스가 있다면 이 도구를 이용해 퍼포먼스 측정을 해보는 것도 유용할 것이다.

[참고]
1. Percona Tcprstat
http://www.percona.com/docs/wiki/tcprstat:start
2. Tcprstat 다운로드
https://github.com/Lowercases/tcprstat/downloads
3. Wikipedia Percentile
http://en.wikipedia.org/wiki/Percentile

댓글 1개:

  1. 안녕하세요

    인터넷상으로 관련정보를 찾다가 찾아오게된 벙문객입니다

    전문가의 조언을 듣고자 질문하나 하려고 하는데요

    질문은
    아이피타임 기가 공유기를 통해서
    유선으로 연결된 컴퓨터 두대가 있고
    각각은 수동으로 아이피를 할당했습니다

    아이피는

    A 컴퓨터 192.168.0.3
    B 컴퓨터 192.168.0.6

    이고

    A컴에서
    ping 192.168.0.3
    응답속도가

    ping 192.168.0.6
    응답속도보다
    항상빠릅니다

    B컴에서도
    자신 아이피로 ping
    한것이 다른컴퓨터도 ping
    한것보다 빠릅니다


    모두 자신 아이피로 ping
    을 한게 빠르고

    A와 B컴 각자 자신에게 ping 한 속도는
    둘간에 거의 같습니다


    다른 컴으로 ping한것은 또 마찬가지로
    두개가 거의같은 속도로 느리구요



    다른 피씨로 ping 할때 게이트웨이를 거쳐서 그런지요?

    두개의 피씨 끼리 다이렉트 연결하는 설정이 있는지요?

    공유키에서 지원하는 기능이나 설정이 있는지요
    두대 피씨의 랜선을 공유기에서 빼서 다이렉트 연켤하는
    방법말고 다른 방법이 있으면 가이드 부탁드립니다

    중요한 사항이라 꼭 확인부탁드립니다

    감사합니다

    답글삭제