2014-04-11 3 views
2

내 restify.js 응용 프로그램에서 DTrace 프로브를 추적 중입니다 (dtrace 지원을 제공하는 node.js의 http 서버를 복원하십시오). 나는 restify 문서에서 샘플의 DTrace 스크립트를 사용하고 있습니다 :dtrace 스크립트 출력의 의미는 무엇입니까?

#!/usr/sbin/dtrace -s 

#pragma D option quiet 

restify*:::route-start 
{ 
    track[arg2] = timestamp; 
} 

restify*:::handler-start 
/track[arg3]/ 
{ 
    h[arg3, copyinstr(arg2)] = timestamp; 
} 

restify*:::handler-done 
/track[arg3] && h[arg3, copyinstr(arg2)]/ 
{ 
    @[copyinstr(arg2)] = quantize((timestamp - h[arg3, copyinstr(arg2)])/1000000); 
    h[arg3, copyinstr(arg2)] = 0; 
} 

restify*:::route-done 
/track[arg2]/ 
{ 
    @[copyinstr(arg1)] = quantize((timestamp - track[arg2])/1000000); 
    track[arg2] = 0; 
} 

그리고 출력은 다음과 같습니다

use_restifyRequestLogger       
      value ------------- Distribution ------------- count  
       -1 |           0   
       0 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2   
       1 |           0   

    use_validate          
      value ------------- Distribution ------------- count  
       -1 |           0   
       0 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2   
       1 |           0   

    pre            
      value ------------- Distribution ------------- count  
       0 |           0   
       1 |@@@@@@@@@@@@@@@@@@@@      1   
       2 |@@@@@@@@@@@@@@@@@@@@      1   
       4 |           0   

    handler           
      value ------------- Distribution ------------- count  
      128 |           0   
      256 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2   
      512 |           0   

    route_user_read         
      value ------------- Distribution ------------- count  
      128 |           0   
      256 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2   
      512 |           0 

내가 value 값 필드 무엇인가 궁금 해서요 - 그것은 무슨 뜻이? 예를 들어 124/256/512가있는 이유는 무엇입니까? 시간/길이를 의미하는 것 같지만 이상한 형식입니다 - 예를 들어 miliseconds을 표시 할 수 있습니까?

답변

3

출력은 histogram입니다. D 스크립트에서 quantize 함수를 사용하고 있기 때문에 막대 그래프가 나타납니다. The DTrace documentation says the following on quantize :

지정된 표현식의 값에 대한 두 개의 거듭 제곱 빈도 분포입니다. 지정한 두 표현식 중 가장 작은 2 진수 집합의 값을 증가시킵니다.

'값'열은 (timestamp - track[arg2])/1000000의 결과입니다. 여기서 timestamp는 나노초 단위의 현재 시간입니다. 따라서 표시된 값은 밀리 초 단위의 지속 시간입니다.

이 모두를 사용하면 route_user_read 결과 그래프에서 128 밀리 초와 256 밀리 초 사이의 두 요청이 있음을 알 수 있습니다.

이 출력은 요청이 많고 서버 성능에 대한 일반적인 이해를 원할 때 유용합니다 (예 : 양방향 배포를 빠르게 확인할 수 있음). 각 요청의 소요 시간을 확인하려면 quantize 대신 printf function을 사용해보십시오.

관련 문제