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



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

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

我们的旧服务器是:

  • 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位应用程序。我尝试创建一个网络花园(有4个工作进程),并同时启动4个cpu密集型CGI,但旧服务器仍然胜过新服务器。我试着提高工人流程的优先级,但没有什么不同。

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

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

提前感谢!

您正在读取大量顺序数据,而您的cpu和ram处于空闲状态,这意味着HDD是瓶颈,因此请将硬盘RAID升级为SSD。

经过大量测试,我们得出的结论是,IIS处理CGI可执行文件的方式必须受到限制(可能会通过安全检查来惩罚磁盘访问)。

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

解决方案: 使用Windows 2003 Standard Edition重新安装新服务器

标准版(而不是网络版)允许Windows2003使用所有四个内核和4GB的RAM。Windows 2003和IIS6不会惩罚我们的CGI。单个CGI的执行时间现在比旧服务器上少了30%左右。此外,4个内核使我们能够处理并发CGI的两倍。

无论如何,谢谢!

最新更新