我正在开发一个在IIS6 / Win2003上托管的ASP.NET(3.5)Web服务应用程序。 Web服务在开始时和返回之前记录调用的时间戳。这允许我查询所花费的时间。我还添加了标准IIS日志(W3C扩展)
的时间然后对web服务进行压力测试(5个线程,每个线程200次调用)将IIS的时间与数据中的时间进行比较时,我看到了巨大的差异!从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;
}
答案 0 :(得分:6)
您的页面请求进入IIS(启动IIS计时器)。只有代码的.NET部分才能传递给.NET框架(启动.NET计时器)。 .net框架处理逻辑,并将结果返回给IIS(停止.net计时器)。 IIS然后完成处理请求并将HTTP响应发送回浏览器(停止IIS计时器)。
IIS可能会完成额外的工作 - 身份验证,处理MIME类型,处理.NET框架未解析的内容(HTML,图像,flash等)。
我个人不希望看到这两个值一致。
答案 1 :(得分:4)
刚刚发现IIS占用的时间包括NETWORK时间。 (see microsoft) 这是自IIS6以来,对于那些关心的人。回到网络男孩!
答案 2 :(得分:1)
我认为IIS时间也包括将请求放入IIS队列的时间。如果工作进程已满,请求将位于队列中,时间开始。
ASP.NEt时间仅在IIS将其移交给ASP.NET应用程序时启动。 因此,如果您的ASP.Net应用程序使用其他Web服务或其他一些缓慢的过程,这也可能是产生差异的原因。