Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Multithreading 红隼限制请求并发性_Multithreading_Asynchronous_Kestrel - Fatal编程技术网

Multithreading 红隼限制请求并发性

Multithreading 红隼限制请求并发性,multithreading,asynchronous,kestrel,Multithreading,Asynchronous,Kestrel,因为我正在与线程饥饿症状作斗争,比如我决定在异步/等待模式下重写整个调用链(i/O、db路径)。 在重写async/wait的巨大努力之后,我非常惊讶的是,这对中/高负载没有任何影响。 因此,我决定将测试简化为以下顺序: WebStressTool->IIS(反向代理)->Kestrel(进程外)->等待MiddleWarePiline.Next()->异步控制器.Action->等待db.StoredProcess(sql:等待1000ms) 在完全异步/等待调用链中,每个请求的处理时间应接近

因为我正在与线程饥饿症状作斗争,比如我决定在异步/等待模式下重写整个调用链(i/O、db路径)。 在重写async/wait的巨大努力之后,我非常惊讶的是,这对中/高负载没有任何影响。 因此,我决定将测试简化为以下顺序:

WebStressTool->IIS(反向代理)->Kestrel(进程外)->等待MiddleWarePiline.Next()->异步控制器.Action->等待db.StoredProcess(sql:等待1000ms)

在完全异步/等待调用链中,每个请求的处理时间应接近1000毫秒。 我希望随着每秒请求数的增加,响应时间应该保持不变(1000毫秒)。 结果如下:

  • 1-9 rqs/秒->响应时间:1010ms。(WebstreSoot:9 rqs/秒)。正如所料,是它的长官
  • 15 rqs/秒->响应时间:2200ms。(WebstreSoot:9 rqs/秒)。瓶颈
  • 25 rqs/秒-响应时间:4500ms。(WebstreSoot:9 rqs/秒)。瓶颈 ……等等
  • 随着每秒请求数的增加,响应时间呈指数增长。 完全异步/等待场景中的正常行为应该是:随着时间的增加或rqs/秒,响应时间应该保持不变:时间=1000ms(可伸缩性)

    所以这些症状与线程不足无关,而是与某个地方的瓶颈问题有关。。。谁知道呢

    经过多次测试后,我发现只有在IIS(反向代理)下运行时才会出现问题。应用程序线程不超过40个,并且在负载下具有巨大的响应时间。在没有IIS(只是kestrel服务器)的情况下重复测试,结果是成功的。该应用程序是可伸缩的

    看来问题出在IIS背后的红隼

    如有任何建议、想法、提示等,将不胜感激


    我有一个可怕的怀疑:在我的开发机器上运行压力场景受到隐藏的IIS自身并发限制的限制。仅在windows server上没有限制。这意味着我花了数百个小时来提高响应时间、重写异步热路径、缓存等,但我被这个隐藏的限制误导了。
    现在,我正在移动windows server 2012上的压力测试。我很快就会回来

    新信息:独立运行(不在IIS后面作为反向代理)通过了测试。因此,问题在于在IIS后面使用。可能是什么?