增加Apache服务器可用性

我们目前正在Apache 1.3上运行一个Perl Web应用程序(我知道这已经严重过时了,但目前我们没有办法做到这一点)。 在整个一天中,随着访问应用程序的用户数量的增加,服务器响应越来越less,直到最终变得不可用。 在这一点上,我们停止Apache服务器,直到没有活动连接,然后服务器重新启动。 这远非理想的解决scheme,并不能解决潜在的问题。

我们怎样才能find问题的根本原因,我们该如何解决这个短期和长期的问题呢?

一些一般的想法:

  1. 在高负载时,使用“top”和“free”检查服务器的状态。 通常,瓶颈将是CPU,内存或IO之一,但是您的应用程序/设置也可能存在特定的问题(例如,当并发用户数增加时出现死锁问题)。
  2. 如果问题是内存(特别是如果它开始页面交换),那么你可以添加更多的RAM或从Apache删除任何不必要的模块。 默认configuration通常会加载所有使Apache每个客户端消耗大量内存的东西。 虽然这看起来很不直观,但您也可以减lessMaxClient的数量,以防止Apache使用太多的内存来开始交换。
  3. 如果问题是CPU,则可以考虑获得function更强大的服务器,或尝试优化应用程序。 我不熟悉Perl,但是使用PHP来安装像APC这样的操作码,可以通过caching已编译的PHP脚本来减lessCPU。 同样的,安装像Squid或Nginx这样的caching层可能有助于减less对Apache / Perl层的请求,具体取决于你的情况可caching的内容。
  4. IO问题可以通过获得更快的磁盘和/或设置RAID(改善性能的种类)来处理。 添加一个caching层和/或增加内存也可以通过将更多的应用程序保存在内存中,并且不必轻触磁盘来减lessIO负载。
  5. 除非问题仅仅是configuration错误的Apache或应用程序,否则您的“最佳”解决scheme可能是调查添加一些caching或移动到更强大的服务器,这取决于您最容易做的事情。

看来你有可扩展性问题。 你有两个select:

1-通过添加更多的CPU,RAM等来升级您的服务器规格。此选项可能很昂贵,而且不能长期满足可扩展性。 此外,还build议您有另一台服务器来删除单点故障。

2-添加更多的服务器,并使用负载均衡器在所有服务器之间分配负载。 这个选项可能会比以前的可用性问题更好,特别是如果您目前只有一个Web服务器。 增加更多的服务器可以提供更多的可扩展性,并且可以使用多个不太昂贵的硬件来完成。