IIS7 和 CGI​​ 上的性能问题(与 IIS6 相比)

IIS7 和 CGI​​ 上的性能问题(与 IIS6 相比)

我的公司正在将应用程序/Web 服务器从 Windows 2003 升级到 Windows 2008(主要是因为托管公司不再提供 2003,并且我们需要新的硬件来提高性能)。

我们的应用程序是用 Delphi(CGI 模块)编写的,数据库是(这有点令人尴尬)DBF 文件。

我们的旧服务器是:

  • Windows 2003 Web SP2 (IIS6) - 32 位
  • 2 GB 内存
  • Intel Xeon CPU 3040 @1.86GHz(双核)
  • 250 GB SATA RAID 1 硬盘

新的服务器是:

  • Windows 2008 Web R2 (IIS7) - 64 位
  • 4 GB 内存
  • Intel Xeon CPU 3320 @2.50GHz(四核)
  • 500 GB SATA RAID 1 硬盘

该应用程序主要需要较高的读取速度,因为我们必须依次循环表格来加载信息(是的,我们使用索引来查找位置)。

生产服务器负载通常低于每秒 5 个请求(相当少),除非谷歌正在编制索引(最多 10-20 个)。有时请求需要一些时间(搜索、销售列表……)。

问题:我们遇到了严重的性能问题。新服务器运行良好,但现在请求需要两倍的时间才能完成。糟糕的是,4 个核心在执行过程中似乎相当空闲。

我在应用程序池中启用了 32 位应用程序。我尝试创建一个 Web 园(具有 4 个工作进程),并启动 4 个同时运行的、占用大量 CPU 的 CGI,但旧服务器仍然胜过新服务器。我尝试提高工作进程的优先级,但没有任何效果。

有人知道会发生什么吗?我可以做些什么来提高新服务器的性能?

(显然,除了重写我们的应用程序之外)

提前致谢!

答案1

经过大量测试后,我们得出结论:IIS 处理 CGI 可执行文件的方式一定存在限制(可能通过安全检查来惩罚磁盘访问)。

我们尝试启动控制台可执行文件,它基本上与 CGI 执行相同的操作(访问相同的 FoxPro 数据库),并且执行时间大致相同(虽然它们应该有所改进,但至少没有变得更糟)。

解决方案: 使用 Windows 2003 标准版重新安装新服务器

标准版(而非 Web 版)允许 Windows 2003 使用所有四个内核和 4GB RAM。Windows 2003 和 IIS6 不会对我们的 CGI 造成不利影响。单个 CGI 的执行时间现在比旧服务器少了约 30%。此外,4 个内核允许我们处理双倍的并发 CGI。

不管怎么说,多谢拉!

相关内容