我的公司正在将应用程序/网络服务器从Windows 2003升级到Windows 2008(主要是因为托管公司不再提供2003,我们需要新硬件才能获得性能)。
我们的应用程序是用Delphi 7(CGI模块)编写的,数据库是(这是一种尴尬的)DBF文件(使用HalcyonDataSet组件加入)。
我们的旧服务器是:
新服务器是:
应用程序主要需要高读取速度,因为我们必须在表格上循环地加载信息(是的,我们使用索引来查找位置)。
生产服务器负载通常低于每秒5个请求(很少),除非谷歌正在编制索引(最多10-20)。有时请求需要一些时间(搜索,销售列表......)。
问题:我们遇到了严重的性能问题。新服务器工作正常,但现在需要的时间要多一倍才能完成。糟糕的是,4核在执行期间似乎非常空闲。
我在应用程序池中启用了32位应用程序。 我已经尝试创建一个Web园(具有4个工作进程),并启动4个同时,CPU密集的CGI,但旧服务器仍然击败新的。我试图提高工作流程的优先级,但没有区别。
是否有人知道可能发生的事情,以及我可以采取哪些措施来提高新服务器的性能?
(除了重写我们的应用程序,显然)
提前致谢!
答案 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的两倍。
非常感谢!