这适用于运行 IIS 的 Windows 计算机。我们的运营人员已接管现有网站/应用程序并创建了第二个网站/应用程序、新文件夹应用程序池,并声称吞吐量会更高。在过去 15 年的 .NET 领域软件开发生涯中,我从未做过这样的事情,这感觉不对。原始网站运行良好,现在有了 2 个,感觉过于复杂和笨拙。在这个领域是否有我不知道的最佳实践,可以批准或拒绝他们所做的事情?
我将进行手动测试,即关闭一组并记录请求和响应,然后打开它们,然后比较我的发现。
任何指导都会有帮助。
-斯蒂芬
答案1
无论如何,您都会为应用程序池创建多个工作线程,而不是另一个站点。通常,这样做是为了解决您无法控制的代码问题,因为您会牺牲诸如缓存命中率之类的东西,同时导致总体内存使用率更高以及大量重复工作。
在几乎所有情况下,它都会降低吞吐量。
告诉他们:Stack Overflow 和我们问答网络的其他部分可以在一台服务器上运行,使用单个应用程序池和单个进程。我认为问题不在于(或通过更改)您的 IIS 配置。
答案2
正如尼克指出的那样,这样做所获得的少数优势很可能会被服务器上额外的 IO 负载所抵消;特别是因为你创建了一个新网站而不仅仅是增加了员工。
每个“线程”/工作者都会在您的服务器上堆积越来越多的负载,每个工作者都会占用原始代码之外的额外空间……每个请求的处理时间最多是相同的,但很可能会更糟。
您的同事的做法就像强迫一匹慢马搬运更多的干草堆,而不尝试减轻干草堆的重量,看看它是否会开始跑步而不是走路……更轻的干草堆来自更高效的代码和实现。只有在这之后,您才应该开始考虑是否值得增加它每次行程的搬运数量。
您可以在以下文章中找到一些使 IIS 应用程序更高效的技巧和窍门: https://msdn.microsoft.com/en-us/library/bb742459.aspx
http://forums.iis.net/t/1148571.aspx?IIS+6+performance+tweak+guide+draft+
这些适用于旧版本的 IIS,但大多数概念仍然适用。