gpt4 book ai didi

sql-server - 什么时候可以在同一台计算机上托管 IIS 和 SQL Server?

转载 作者:行者123 更新时间:2023-12-02 07:31:47 25 4
gpt4 key购买 nike

我听说在同一台计算机上安装 SQL Server 和 IIS 是不明智的,但我还没有看到任何证据证明这一点。有人尝试过吗?如果是的话,结果是什么?什么时候需要将它们分开?是否需要进行任何调整?我特别关心 IIS7 和 SQL Server 2008。

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

最佳答案

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

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

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

关于sql-server - 什么时候可以在同一台计算机上托管 IIS 和 SQL Server?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1401834/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com