2017-05-05 13 views
4

特定のSOAP API用のクライアントを作成しています。 5全体の通話時間を格納する2つの 源から計算GetPricesコールのSOAP呼び出し実行時間の測定サーバーログとクライアント間の差異

平均期間コール平均期間 を示しています。私は巨大な実行時間と私にこのことを告げたので、連絡APIの所有者を取得しています私たちのシステムをちょうど 25ミリ秒と呼んでいた日数は、同じ期間に の間、ほとんどの賭け人の平均と一致しています。 2つの送信元は、 がすべてのアプリケーション コンポーネント間のコールの継続時間を計算するSentry Logsと、APIサーバーからの間の転送時間( )を含むIISLogから取得された時間です。

同じGetPrices呼び出しでは、私はサーバーログより4倍長い平均0.08-0.1秒でした。

私の測定値とAPI所有者の測定値の間に大きな違いがあるのはなぜですか?

私は私の実行時間を計測する方法は非常に簡単です:

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

私が提供できる何かがあるのなら、私に知らせてください。

+2

サーバの応答時間だけでなく、SOAPライブラリが応答を解析して関連オブジェクトに変換するのにかかる時間もあります。どのライブラリを使用していますか? – jordanm

+0

@jordanm私はpython sudsライブラリを使用しています。このGetPricesによって返されるレスポンスはわずか11477バイトで0.01MBです。私は解析することが実行時間に大きな影響を与えるのではないかと疑います。それとも? – Marijus

+1

プロファイラを使用して、ほとんどの実行時間が費やされた場所を特定できます。私は何年も前に石鹸呼び出しが処理に非常に長い時間を要したプロジェクトを持っていましたが、私たちが使っていたライブラリ(python-zsi)では非効率でした。騒ぎに切り替えると、パフォーマンスが大幅に向上しました。 – jordanm

答えて

2

次の表を参照してください。つまり、あなたはサーバーの負荷を考慮に入れています。サーバーはそれを実行しません。

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 

あなたは ACKポイントで/停止タイミングを開始することができるならば、あなたのタイミングの違いが低くなります。

0

ネットワークの待ち時間、クエリがサーバーに到達するまでの時間、および応答が返されるまでの時間はどうですか? ネットワークトレースをしましたか?通常、送信元のTCPヘッダーのタイミングでこの原因が確認できます。ネットワークモニタ(またはその代替)またはwiresharkを使用できます。これを分析する。

短い単純待ち時間テストは、ウィンドウ上のパスピングです。

関連する問題