Multithreading 红隼限制请求并发性
因为我正在与线程饥饿症状作斗争,比如我决定在异步/等待模式下重写整个调用链(i/O、db路径)。 在重写async/wait的巨大努力之后,我非常惊讶的是,这对中/高负载没有任何影响。 因此,我决定将测试简化为以下顺序: WebStressTool->IIS(反向代理)->Kestrel(进程外)->等待MiddleWarePiline.Next()->异步控制器.Action->等待db.StoredProcess(sql:等待1000ms) 在完全异步/等待调用链中,每个请求的处理时间应接近1000毫秒。 我希望随着每秒请求数的增加,响应时间应该保持不变(1000毫秒)。 结果如下:Multithreading 红隼限制请求并发性,multithreading,asynchronous,kestrel,Multithreading,Asynchronous,Kestrel,因为我正在与线程饥饿症状作斗争,比如我决定在异步/等待模式下重写整个调用链(i/O、db路径)。 在重写async/wait的巨大努力之后,我非常惊讶的是,这对中/高负载没有任何影响。 因此,我决定将测试简化为以下顺序: WebStressTool->IIS(反向代理)->Kestrel(进程外)->等待MiddleWarePiline.Next()->异步控制器.Action->等待db.StoredProcess(sql:等待1000ms) 在完全异步/等待调用链中,每个请求的处理时间应接近
我有一个可怕的怀疑:在我的开发机器上运行压力场景受到隐藏的IIS自身并发限制的限制。仅在windows server上没有限制。这意味着我花了数百个小时来提高响应时间、重写异步热路径、缓存等,但我被这个隐藏的限制误导了。
现在,我正在移动windows server 2012上的压力测试。我很快就会回来新信息:独立运行(不在IIS后面作为反向代理)通过了测试。因此,问题在于在IIS后面使用。可能是什么?