如何配置 IIS-10 和 FastCGI 以实现高并发?

How do I configure IIS-10 and FastCGI for high concurrency?

场景:我们有一个通过 FastCGI 使用 IIS10 的 php 7 Web 应用程序。我们对我们的应用程序进行了性能测试,发现速度变慢了。我们排除了数据库层。我们查看了 IIS 服务器,即使在重负载下,当应用程序速度急剧下降时,资源也不会紧张……没有 CPU 峰值 没有 RAM 峰值。进一步挖掘,我们得出结论,所有进入的请求都只是在排队。当一些请求需要更长的时间(对于一些需要 1-3 分钟的非常大的报告)时,其他所有请求都会排队等待第一个请求通过。

因此,问题是:我们从哪里着手增加 IIS 一次可以处理的并发请求数?

我在 FastCGI 下找到了这些设置,但文档很少。有人可以解释一下这四个设置的作用吗?

我们应该在 DefaultAppPool 下查看任何其他设置吗?

更新: 对于可能搜索此内容的其他人,应该澄清一些事情:

Instance MaxRequests:控制 FastCGI 进程回收行为。指定 FastCGI 应用程序在进程被回收之前允许处理的最大请求数。默认值为 200。

Max Instances:指定所选 FastCGI 应用程序的应用程序进程池中允许的最大 FastCGI 进程数。这个数字也代表了 FastCGI 应用程序可以处理的最大并发请求数。默认值为 4。

Queue Length:指定为 FastCGI 应用程序池排队的最大请求数。当队列已满时,后续请求 return HTTP 错误代码 503(服务不可用)到客户端。此错误代码表示应用程序太忙。默认值为 1000。

Rapid Fails PerMinute:指定允​​许向应用程序发出请求的最长时间。如果 FastCGI 进程在单个请求上花费的时间超过指定时间,它将被终止。默认值为 90 秒。

应用程序池:

队列长度:指示 HTTP.sys 在拒绝未来请求之前有多少请求需要排队等待应用程序池。默认值为 1000。

最大工作进程数:指示将用于应用程序池的最大工作进程数。

Recycling中的属性可以参考这个link:

https://docs.microsoft.com/en-us/iis/configuration/system.applicationhost/applicationpools/add/recycling/