我目前有一个 asp.net web 应用程序,运行在我们网络上的一台装有 iis 5.1 和 sql server 2005 的 xp 机器上。此应用程序处理大型 excel 文件(50MB 以上),处理 100 条产品信息记录,并处理这些数据。目前,没有多少人可以访问该应用程序并执行任何实质性操作,而不会导致系统冻结。
我希望能够在任何给定时间有大约 10 个人使用该系统执行这些大型任务。
我是否应该将 Web 服务器和 SQL 服务器放在不同的机器上?XP、Vista、7、Windows 服务器?32 位还是 64 位?RAM?CPU?
显然成本是一个问题……
任何建议、想法或文章链接都将不胜感激!
答案1
您的应用程序要求今天似乎不太繁重。使用配置良好的机器,您不需要将功能分为 SQL 框和 Web 框。
如果成本是主要因素,那么 OS 和 SQL 版本将取决于许可成本,而这又取决于您的组织是否有来自 MS 的合作伙伴协议/特殊优惠。
但是,在投入资金之前,绝对值得先了解一下整个系统的设计。通常可以通过更改 SQL 数据库中的锁定/隔离方案来修复“冻结”问题 - 如果您有用户尝试从使用 SQL 默认锁定更新的表中读取数据,您将被阻止。(查看READ UNCOMMITTED
提示NOLOCK
但不要盲目依赖它们)
还要查看 PerfMon 以查看磁盘 I/O 是否导致速度变慢(查找average disk queue length
预期值) - 这将有助于了解您是否需要集中精力在新机器中使用更好的磁盘阵列(RAID 1、5、10 等)。
答案2
您知道 Windows XP 上的 IIS 5.1 在并发用户方面存在一些严重的限制吗?我相信限制是 2 个并发 HTTP 连接;它不是服务器操作系统。
我认为您可以破解注册表以启用 10,但我想您明白我的意思。无论 IIS 平台如何,将 SQL 服务器移动到另一台服务器都是一个好主意。
—奥辛
答案3
实际上限制是 10。您正在从客户端的角度考虑 WinInet 对同一主机的 2 个连接的限制。
将其移至 Server 2003 或 Server 2008 实例,除非代码从并发角度来看写得不好,否则应该没问题。但是,如果您访问的是物理文件(即 excel 文件),并且没有为并发管理进行适当的锁定等,您仍然可能运气不佳。
答案4
IIS 5.1 实际上是您的物理限制。正如其他人所说,Windows XP 不是服务器,因此内置的 Web 服务器并非设计用于同时处理超过 10 个用户的连接。
将您的应用程序迁移到 Windows Server 2003 或 2008 将为您的应用程序带来更多潜力。如果您一天内不需要超过几百个连接,那么在机器上同时运行 SQL 服务器和 Web 服务器就可以了。如果您需要更多连接,那么将关注点分开可能是更好的方法。
祝你好运,希望这对一些人有所帮助。