在现代硬件上的常规networkingCGI可扩展性?

我参与了一个项目,以升级10年基本不变的时间跟踪系统。 它运行在HP Proliant Pentium上的Linux / Apache / CGI / MySQL3,结合了一些perl和bash“here文件”(带有一个C库来parsing/清理传入的请求)按请求方式。

公司从2001年的约10人增长到现在的750多人,计划在未来几年内增长到几千人。 应用程序有一些性能问题,但经过调查后,出现了性能问题,处理了数百万次的条目,明显缺less索引和结果,导致大页面无法分页。

在Apache和请求进程的利用只是不占用太多的CPU时间和内存; 笛卡儿join百万张唱片的桌子却消耗了大量的金钱,据说甚至在本月底的时候都会定期locking。

我想解决这些方法的问题:

  1. 添加索引并调整一些模式。
  2. 升级硬件。
  3. 升级到更新的MySQL
  4. 更新UI是一个less一点的老派。

我只是没有看到任何理由把完整的CGI程序重新写入进程内架构。 我认为CGI会挺好的考虑到过去十年来我们在硬件方面所取得的进展,您是否真的对于单独处理CGI架构有任何顾虑? 事情就是,我们可以在一台新的服务器上花费几千美元,或者重新编写多个10G的美元。

一些想法:

  • 是的,升级硬件,如果只是为了避免依赖于难以find的备件。
  • DB的正确索引可以轻松地将时间缩短100或1000倍甚至更多,特别是在数百万条logging表上。
  • 从GCI转到其他架构可以避免进程启动时间,仅此而已。 当每秒处理数百或数千个请求时,这是一个很大的区别,这似乎不是你的情况。

我真的不觉得有什么问题,只要购买新的硬件。

即使您决定稍后重新编写应用程序,您是否真的会在旧硬件上部署新应用程序? 我怀疑它,所以无论你需要投资硬件。

如果有运气(还有一些性能testing),新的硬件将会(在你的列表中做1和3之后)缩放,你可以跳过许多10G的重写