首页 > 解决方案 > 如何配置 IIS-10 和 FastCGI 以实现高并发?

问题描述

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

所以,问题是:我们在哪里寻找增加 IIS 一次可以处理的并发请求的数量?

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

在此处输入图像描述

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

在此处输入图像描述

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

标签: performanceiisfastcgiiis-10

解决方案


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

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

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

Rapid Fails PerMinute:指定对应用程序的请求所允许的最长时间。如果一个 FastCGI 进程在单个请求上花费的时间超过了指定的时间,它就会被终止。默认值为 90 秒。

应用程序池

队列长度:向 HTTP.sys 指示在拒绝未来请求之前要为应用程序池排队的请求数。默认值为 1000。

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

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

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


推荐阅读