Sql server 何时可以在同一台计算机上托管IIS和SQL Server?

Sql server 何时可以在同一台计算机上托管IIS和SQL Server?,sql-server,iis,performance,Sql Server,Iis,Performance,我读到在同一台机器上安装SQL Server和IIS是不明智的,但我没有看到任何证据。有人试过这个吗?如果有,结果如何?什么时候才有必要将它们分开?有必要调整吗?我特别关注IIS7和SQL Server 2008 如果有人能提供数字,说明什么时候使用两台机器更有意义,那将是最有帮助的 有可能,是的 一个生产环境的好主意,不是 您将遇到的问题是,在大量负载下的SQL Server数据库很可能会执行大量磁盘I/O操作,并占用大量内存。这种组合将束缚机器,当IIS试图提供页面服务时,您将看到它的性能受

我读到在同一台机器上安装SQL Server和IIS是不明智的,但我没有看到任何证据。有人试过这个吗?如果有,结果如何?什么时候才有必要将它们分开?有必要调整吗?我特别关注IIS7和SQL Server 2008

如果有人能提供数字,说明什么时候使用两台机器更有意义,那将是最有帮助的

有可能,是的

一个生产环境的好主意,不是


您将遇到的问题是,在大量负载下的SQL Server数据库很可能会执行大量磁盘I/O操作,并占用大量内存。这种组合将束缚机器,当IIS试图提供页面服务时,您将看到它的性能受到影响。

是的,这是可能的,很多人都这么做了

这往往是一个安全和/或性能问题。
安全性受到质疑,因为您的攻击面在同时具有这两个属性的盒子上增加。也许对你来说不是问题

性能受到质疑,因为现在您的服务器正在服务web和DB请求。再说一次,在你的情况下,也许不是一个问题

测试与生产

许多人在测试环境中感觉良好,但在生产环境中感觉不好


再一次,你的团队的电话。我希望我的测试和生产环境尽可能相似,但这是我的偏好。

在某些情况下,这是不明智的。。。对别人完全明智

如果您的计算机未得到充分利用,并且不会承受沉重的负载,那么在同一台计算机上安装数据库是一个优势,因为您不必通过网络传输任何内容


另一方面,如果IIS或数据库中的一个或两个都处于重负载下,它们可能会开始干扰,并且每个IIS或数据库的专用硬件的性能增益可能会超过必须通过网络传输的损失。

您当然可以。例如,如果您有大量的用户群,或者对数据库运行了大量繁重的查询,那么您将遇到性能问题。我曾在几个网站上工作过,这些网站通常托管在1和1上,它们在同一个盒子上运行IIS和SQL Server(Express!),有数千个用户(数百个并发用户)和数百万条设计糟糕的表中的记录,通过编写糟糕的存储过程进行访问,用户体验当然是可以忍受的。归根结底,这取决于您计划如何使用服务器。

将SQL server与任何其他产品(包括另一个SQL server实例)一起运行是不明智的。之所以提出此建议,是因为SQL Server使用操作系统资源的方式不同。SQL Server在名为的用户模式内存管理和处理器调度基础结构上运行。SQL Server设计为以最高性能运行,并假定它是操作系统上唯一的服务器。因此,SQL操作系统为SQL进程保留机器上的所有RAM,并为每个CPU核心创建一个调度程序,并在需要时利用它所能获得的所有CPU,为所有调度程序分配要运行的任务。因为SQL保留所有内存,所以其他需要内存的进程将导致SQL看到,对内存压力的响应将从缓冲池中逐出页面,并从计划缓存中逐出已编译的计划。而且,由于SQL是唯一真正利用API的服务器(有传言说下一个Exchange也会这样做),SQL是唯一一个实际收缩以给其他进程(如泄漏的错误ASP池)留出空间的进程。BOL中也解释了这种行为

CPU调度也会出现类似的模式,其他进程从SQL调度器窃取CPU时间。在高端系统和Opteron机器上,情况变得更糟,因为SQL充分利用了局部性,但没有其他进程通常不知道NUMA,并且,尽管操作系统可以尽量保持分配的局部性,由于CPU在等待跨numa边界页面访问时处于空闲状态,因此它们最终会分配整个物理RAM,并降低系统的总体吞吐量。由于其他进程占用CPU周期,还有其他需要考虑的事情,L2错误增加。


总而言之,您可以使用SQL Server运行其他服务器,但不推荐这样做。如果必须,请确保尽最大能力隔离这两台服务器。使用SQL和IIS/ASP的CPU关联掩码将两者隔离在不同的内核上,将SQL配置为保留较少的RAM,以便为IIS/ASP保留可用内存,将应用程序池配置为积极回收,以防止应用程序池增长。

不要忘记维护问题……如果不使用核启动另一个应用程序池,则无法重新启动/修补其中一个应用程序池。如果它们位于两个框中,那么您可以为用户提供更好的体验,而不是在维护SQL框时Web服务器没有响应


虽然不是榜首,但值得注意。

@Remus Rusanu-很多人都喜欢你的答案,包括我自己。好的技术信息!:)我认为答案往往取决于具体情况。我们使用单服务器技术是因为简单、成本高,而且我们的情况下的资源不需要分离。当这些要求改变时,我们改变了,但这需要将近8年的时间。我想很多中小型商店也会遇到同样的情况。想法?@klabranche:我提供的技术信息应该有助于配置混合服务器,以便在SQL和IIS/ASP之间尽可能最好地划分内存、I/O和CPU。从长远来看:IIS/ASP可以很容易地向外扩展,而SQL可以很容易地向上扩展。因此,自然的趋势是在农场或廉价商品硬件的“花园”上移动IIS/ASP,而SQL则独自留在组织拥有的最大机器上。@Remus Rusanu-我同意。您是否同意,对于中小型商店/应用程序来说,单服务器的情况不一定是一种不好的方式?有时您必须使用