我什么时候可以在同一台机器上托管IIS和SQL Server?

Jus*_* R. 13 sql-server iis performance

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

如果有人可以提供显示何时更有意义去两台机器的数字,那将是最有帮助的.

Rem*_*anu 47

使用任何其他产品(包括另一个SQL Server实例)运行SQL Server是不明智的.此建议的原因是SQL Server如何使用OS资源的性质.SQL Server在称为SQLOS的用户模式内存管理和处理器调度基础结构上运行.SQL Server旨在以最佳性能运行,并假设它是操作系统上唯一的服务器.因此,SQL OS会在机器上为SQL进程保留所有RAM,并为每个CPU核心创建一个调度程序,并为所有调度程序分配任务,以便在需要时利用它可以获得的所有CPU.由于SQL保留所有内存,因此需要内存的其他进程将导致SQL查看内存压力,并且对内存压力的响应将从缓冲池和计划缓存中编译的计划中逐出页面.而且由于SQL是唯一实际利用内存通知 API的服务器(有传言称下一个Exchange也会这样),因此SQL是唯一实际收缩以为其他进程提供空间的进程(如漏洞的错误ASP池).BOL:动态内存管理中也解释了此行为.

CPU调度会发生类似的模式,其他进程会从SQL调度程序中窃取CPU时间.在高端系统和Opteron机器上事情变得更糟,因为SQL 充分利用了NUMA局部性,但是没有其他进程通常不知道NUMA,并且尽管操作系统可以尝试保留分配的位置,但它们最终会分配全部在物理RAM上并降低系统的总吞吐量,因为CPU在等待跨域边界页面访问时空闲.由于其他进程占用CPU周期,还有其他因素需要考虑TLB和L2未命中增加.

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

  • 有时你必须玩你所处理的牌.但是,任何以网络形式为生的商店都应将两者分开. (6认同)
  • 如果系统上的负载很低并且web(或中间撕裂)代码对sqlserver提出了很多小的请求,那么你甚至可以更快地在同一台服务器上运行所有内容,因为你可以通过没有开销来获得更低的延迟.网络. (3认同)

Kev*_*che 6

是的,这是可能的,很多人都这样做.

它往往是安全和/或性能的问题.
安全受到质疑,因为你的攻击面增加了两个盒子.对你来说也许不是问题.

性能受到质疑,因为现在您的服务器正在提供Web和数据库请求.再一次,也许不是你的问题.

测试与生产....

许多人可能在测试环境中感觉很好但不是生产....

再次,你的团队的电话.我喜欢我的测试和生产环境尽可能相似,但这是我的偏好.