2017-05-05 5 views
4

특정 SOAP API에 대한 클라이언트를 작성하고 있습니다. 5 걸쳐 통화의 지속 시간을 저장하는 두 소스로부터 계산 GetPrices 호출서버 로그와 클라이언트 사이의 SOAP 호출 실행 시간 측정 차이점

평균 지속 된 전화 평균 기간 을 보여 나는 거대한 실행 시간과 나에게이 말 때문에 연락 API 소유자 받고 있어요 도박꾼이 우리 시스템을 그냥 25 밀리 초라고 부르는 날은 같은 기간 동안 가장 많은 삿대를 젓는 사람의 평균과 일치합니다. 두 소스는 Sentry Logs이며, 은 모든 응용 프로그램 구성 요소 사이의 호출 시간을 계산하고 API 서버에서 PUTTER 호출 시스템까지의 전송 시간을 포함하는 IISLog에서 가져온 시간을 계산합니다.

동일한 GetPrices 호출에 대해 정확히 말하면 서버 로그보다 4 배 긴 평균 0.08-0.1입니다.

아마도 측정 량과 API 소유자의 측정치간에 큰 차이가있을 수 있습니다.

내 실행 시간을 측정하는 방법은 매우 간단합니다 :

start_time = time.time() 
# GetPrices call 
end_time = time.time() - start_time 

내가 제공 할 수있는 뭔가가 있다면 알려 주시기 바랍니다.

+2

서버 응답 시간뿐만 아니라 비누 라이브러리가 응답을 구문 분석하여 관련 개체로 변환하는 데 걸리는 시간도 측정 할 수 있습니다. 어떤 라이브러리를 사용하고 있습니까? – jordanm

+0

@jordanm python suds 라이브러리를 사용하고 있습니다. 이 GetPrices에 의해 반환 된 응답은 겨우 11477 바이트이며 0.01MB입니다. 나는 파싱이 실행 시간에 많은 영향을 미친다는 것을 의심 스럽다. 아니면 그렇습니까? – Marijus

+1

프로파일 러를 사용하여 대부분의 실행 시간이 소비 된 곳을 확인할 수 있습니다. 나는 비누 호출이 처리하는 데 오랜 시간이 걸렸던 몇 년 전에 프로젝트를 가졌지 만, 나중에 우리가 사용하고있는 라이브러리 (python-zsi)에서 비효율적이라는 것을 알게되었습니다. 비눗물로 전환하면 성능이 크게 향상되었습니다. – jordanm

답변

2

다음 표를 고려하십시오. 간단히 말해서, 당신은 서버 워크로드를 고려하고 있으며 서버는 그렇지 않습니다. 당신이 ACK 지점에서/정지 타이밍을 시작 할 수있는 경우

client      server 
start timing 
client get (small data) -> server receive request 
         <- server ack request start timing 
client receive ack 
client waiting response  server workload to create response 
         <- server response (big data) 
client receive response 
client ack response  -> server stop timing 
client workload parsing response 
client stop timing 

, 당신의 타이밍 차이가 낮아진다.

0

네트워크 대기 시간, 쿼리가 서버에 도달하는 데 걸린 시간 및 응답을 받기까지 걸리는 시간은 어떻습니까? 네트워크 추적을 수행 했습니까? 일반적으로 전송의 TCP 헤더 시간에이 원인이 표시되고 네트워크 모니터 (또는 해당 대체) 또는 wireshark를 사용할 수 있습니다. 이것을 분석하기.

짧은 대기 시간 테스트는 Windows에서의 경로 지정입니다.