IIS性能“体系结构”
本文关键字:体系结构 性能 IIS | 更新日期: 2023-09-27 18:11:49
我只是想知道什么会有最好的性能。
假设我们有3个物理服务器,每个服务器有32核和64gb内存,应用程序是一个"标准的"asp.net应用程序。负载平衡已经到位。
Setup 1# -一个应用程序消耗所有-一台IIS服务器,在每台物理服务器上运行一个应用程序。(共3个应用程序"端点")
Setup 2# -共享资源-一个IIS服务器,在一个webfarm中有16个应用程序。(总共48个应用程序"端点")
Setup 3# - Virtualization虚拟化:15个虚拟服务器(总共45个应用程序端点)
什么会有最好的性能,为什么?
看情况!这在很大程度上取决于应用程序正在做什么以及它在哪里花费时间。
从广义上来说:
如果应用程序是计算约束的——即从外部源(如数据库)检索数据所花费的时间是有限的——那么在大多数情况下,设置#1可能是最快的。IIS本身是高度多线程的,让它控制机器的资源将允许它进行自调优。
如果应用程序是数据绑定的——即每个请求超过(比如说)40%的时间花在获取和等待数据上——那么设置#2可能更好。对于编写得不太好的应用程序进行同步进程内数据库访问尤其如此:即使线程坐在那里等待数据库访问完成,它仍在消耗资源。
正如这里讨论的:如何在IIS 7.0上增加线程池线程,您最终会耗尽线程池线程。然而,正如MSDN上所讨论的:http://blogs.msdn.com/b/david.wang/archive/2006/03/14/thoughts-on-application-pools-running-out-of-threads.aspx通过创建多个IIS工作进程,你实际上只是在掩盖更大的潜在问题。
除非有其他原因——比如可管理性——否则我不推荐设置#3,因为在整个虚拟机中管理其他操作系统的开销相当大。
因此:监视您的系统,使用类似MiniProfiler (http://code.google.com/p/mvc-mini-profiler/)的东西来找出代码中的问题所在,并尽可能使用异步非阻塞调用。
这真的取决于您的应用程序,您必须为每个体系结构设计和性能测试您的设置。有些应用程序在设置1上运行得很快,而在其他设置上运行得很慢,反之亦然。在iis中还有很多可以优化性能的东西。关键是要设计用于监视和伸缩的应用程序。