我们有一个基本的ASP Web API设置:单个ApiController
,其中有许多方法被配置为POST请求的终点。这些接收相当大的JSON流,通过[FromBody]
属性反序列化。
如果连接中断/终止,请求将保留在IIS工作进程请求队列中。他们似乎没有超时。更糟糕的是,由于RequestHandler
中的某些正在保持忙碌,在一系列失败和“卡住”请求之后,CPU消耗接近100%。记录表明ApiController
中的操作方法尚未执行。
简短地讲述一个大故事。我可以做些什么来让这些方法超时,以便将它们从队列中删除?正常的web.config似乎不起作用。
答案 0 :(得分:2)
在大多数情况下编译debug = true是问题.. Here是关于类似问题的更多讨论。 如果这也没有帮助...当CPU消耗接近100%时采取w3wp进程的内存转储并使用Windows调试工具进行转储分析..
答案 1 :(得分:0)
您可以配置应用程序池的回收设置。在IIS的此设置中,您可以使用计划,请求编号或特定的MB限制来回收应用程序池。