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

时间:2013-12-10 12:58:04

标签: iis-7 cgi iis-6 windows-server-2008 delphi-7

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

我们的应用程序是用Delphi 7(CGI模块)编写的,数据库是(这是一种尴尬的)DBF文件(使用HalcyonDataSet组件加入)。

我们的旧服务器是:

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

新服务器是:

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

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

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

问题:我们遇到了严重的性能问题。新服务器工作正常,但现在需要的时间要多一倍才能完成。糟糕的是,4核在执行期间似乎非常空闲。

我在应用程序池中启用了32位应用程序。 我已经尝试创建一个Web园(具有4个工作进程),并启动4个同时,CPU密集的CGI,但旧服务器仍然击败新的。我试图提高工作流程的优先级,但没有区别。

是否有人知道可能发生的事情,以及我可以采取哪些措施来提高新服务器的性能?

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

提前致谢!

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

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

Standard Edition(而不是Web Edition)允许Windows 2003使用所有四个内核和4GB内存。 Windows 2003和IIS6不会惩罚我们的CGI。 单个CGI的执行时间现在比旧服务器上的执行时间少30%。此外,4核允许我们处理并发CGI的两倍。

非常感谢!