我们有一个运行IIS和SQL的计算机上的应用程序。这是一台Windows2003standard服务器,在VM上运行着4gig的RAM。
现在,用户数量在不断增加。也有一些庞大的统计信息,可由用户运行,但对其他用户的性能影响很大。因此,我们需要以某种方式提高性能。
我考虑过在Windows2008 64位和每台机器至少6gigs RAM的2台不同机器上分离IIS和SQL,但是它也应该有一个故障转移解决方案。
您能否推荐一些方案来解决性能和故障转移问题?
谢谢
ps:
仅供参考:我们现在在IIS中使用Inproc状态管理,但我认为更改为sqlstatemanagement会更好。
编辑
我已经将问题扩大到了故障转移的地步。由于我们的客户不想在服务器和SQL许可证上花费太多钱。仅复制到第二台SQL服务器并将其用作故障转移,是否可以?您知道一些更好的“廉价”解决方案吗?
该应用程序仅供内部使用,但是现在越来越多的部门参与该项目。
现在,我在虚拟机上拥有32位操作系统。由于Standard Edition不允许两个服务器(IIS和SQL)使用AWE,因此SQL Server将加载最大容量(大约1.8 GB),并为IIS和OS留出大量RAM。但是一旦移至64位操作系统,情况就会发生变化,因为SQL Server将占用其缓冲池的所有RAM(如果有6GB可用,则为〜5GB),然后在收到通知时开始将其返还给OS 。可以通过配置SQL Server内存选项来调整此行为。通过将IIS和SQL拆分为单独的VM,您可以将SQL VM的所有内存留给其缓冲池,这很好。理想情况下,您应该有足够的RAM,以便SQL可以将整个数据库加载到内存(包括tempdb)中,并且仅需触摸磁盘进行日志写入,以及何时需要检查数据库。换句话说,更多的RAM意味着更快的SQL。到目前为止,它是SQL性能所需的最重要的硬件资源,并且将为您带来最大的收益。
现在回到有关“故障转移”的广泛问题。在SQL Server中, 高可用性 解决方案分为两类: 自动 和 手动 。对于 自动 故障转移,您实际上只有几种解决方案:
如果您正在考虑手动故障转移解决方案,那么还有其他两种选择:
日志传送 。日志传送基本上是带外镜像。通过文件复制操作可以传输日志,而不是通过专用的TCP连接实时传输日志记录。选择镜像传送而不是镜像的理由很少:可以查询备用数据库以进行报告,可以将备用数据库放置在具有零星连接性的位置,可以将备用数据库安装在功率真的很低的机器上。
复制。这确实不是一个高可用性解决方案。复制是提供数据副本和/或在站点之间交换数据更新的解决方案。尽管可以将其用于部署某种类型的高可用性临时“解决方案”,但这样做存在很多问题,并且基本上没有优势。与日志传送和镜像相比,它具有许多 其他 缺点,因为故障转移的单元甚至不是数据库,而仅仅是数据库(某些表)中的数据片。诸如用户和安全权限之类的元数据不会故障转移,架构更改必须在复制感知模式下完成有些更改甚至无法复制。根据合同,镜像和日志传送均提供与生产数据库相同的备用副本,该副本自动覆盖对数据库所做的 任何 更改。
您提到您担心许可证成本: 除 复制 外, 您实际上不需要具有任何这些技术的任何 被动 服务器的许可证。备用服务器只有在它们变为活动状态并且运行数据库超过30天时才需要许可证。 __
考虑到您计划在VM上进行部署,我的选择是群集。如果您要在金属上部署,由于群集硬件的成本,我建议您使用镜像。