2009-07-07 11 views
4

IIS6/Win2003でホストされているASP.NET(3.5)Webサービスアプリケーションを開発しています。 webserviceは、開始時と終了直前にコールのタイムスタンプを記録します。これにより、私は時間がかかることを照会することができます。また、標準のIISログ(W3C拡張)に時間を追加しました。IISとASP.NETでの時間の差

ウェブサービスは、その後、ストレステストされました(5スレッド、スレッドあたり200コール)。IISから取得した時間とdatase、私は大きな違いを参照してください! IISから取得された時間(呼び出し側のクライアントによって記録されたタイムテイク)は、ASP.NETによって記録されたタイムテイクよりもはるかに高いです。たとえば、ASP.NETの使用時間は1.7秒、​​IISは12000(ミリ秒)です。

何が原因なのでしょうか?

サービスのためのダミーコード:

[WebMethod(Description = " Main entry point to the service.")] 
public string MethodA(string theXmlInput) 
{    
    //log first 
    StoreInput(theXmlInput); 

    //Run the job, should take about 1 sec 
    string result = DoIt(theXmlInput);    

    //log output 
    StoreResult(result); 

    return result; 
} 

答えて

4

IISタイムアウトにはNETWORK時間が含まれています。 (see microsoft) これはIIS6以降、気になる人のためです。ネットワークの男の子に戻る!

6

あなたのページリクエストがIISに入ってくる(IISタイマーを開始)。コードの.NETセクションのみが.NETフレームワークに渡されます(.NETタイマーを開始します)。 .netフレームワークはロジックを処理し、結果をIISに返します(.netタイマーを停止します)。その後、IISは要求の処理を終了し、HTTP応答をブラウザに返します(IISタイマーを停止します)。

IISは、認証、MIMEタイプの処理、.NETフレームワーク(HTML、画像、フラッシュなど)によって解析されないコンテンツの処理に負荷をかけている可能性があります。

個人的には、これらの2つの値が整列しているとは思わないでしょう。

+0

私はこの推論に全く同意しません。推論は正しかったが、わずかな違いしか説明していないが、質問に記載されている数字は大小の差がある。また、HTML/image/Flashファイルの処理は、この質問にはまったく関係なく、そのようなベンチマークに影響することもありません。 – Iravanchi

+0

"私はこの推論にまったく同意しません。推論は正しかったのですが..." ...ええと... ...? –

1

IISキューに要求があると、IIS時間にも時間が含まれていると思います。ワーカープロセスが手がいっぱいになると、要求はキューに入れられ、時間が開始されます。

ASP.NEt時間は、IISがASP.NETアプリケーションにその時刻を渡すときにのみ開始されます。 ASP.Netアプリケーションが別のWebサービスまたはその他の低速プロセスを使用している場合は、これが違いの原因になる可能性があります。