我目前正在生产环境中遇到一些问题,经过一些调查后,我看到很多请求在应用程序池的工作进程中排队。常见的是,长时间排队的每个请求都是一个web api请求,我在应用程序中同时使用 MVC 和 Web API 。
请求排队约3小时,当应用程序池被回收时,它们会立即开始排队。
他们都在 ExecuteRequestHandler 状态
我应该继续挖掘哪些想法?
答案 0 :(得分:2)
您的请求可能会因多种原因而停止:
为了找出您的请求正在做什么,首先要获取请求的网址需要很长时间。
您可以在cmd行中执行此操作,如下所示
c:\windows\system32\inetsrv\appcmd list requests
如果从网址中看不清楚并且查看代码,则需要在服务器上执行w3wp.exe的进程转储。一旦你有一个进程转储,你需要将它加载到windbg中,以分析占用所有cpu周期的内容。覆盖windbg非常重要,但简要介绍一下你需要做什么:
有很多关于使用windbg的博客。这是one示例。分析这些类型问题的一个很好的资源是Tess Ferrandez的blog。
答案 1 :(得分:0)
这是一个很长的镜头,没有第一手访问您的系统,但尝试检查IIS管理器gui中的Handler映射为您的WebApi。将它与DEV的IIS设置或其工作的任何其他Env进行比较。
如果这不是问题,那么请对该应用程序的所有其他IIS设置进行比较。
祝你好运。