在EC2上托管的网站的问题

时间:2013-11-18 06:17:42

标签: tomcat joomla amazon-web-services amazon-ec2

我在EC2上托管了一个网站,它运行在apache tomcat服务器上。最近,我的网站上的流量增加了,当我试图访问我的网站时,我一次又一次出现以下错误:

The webpage is currently unavailable. It may be overloaded or down 
for maintenance.

以下是我的实例详细信息:

  1. RAM = 1.7 GB
  2. 磁盘空间= 100 GB
  3. 以下是free -m(RAM详细信息)的输出:

                 total       used       free     shared    buffers     cached
    Mem:          3750       1566       2184          0        172        639
    -/+ buffers/cache:        754       2996
    Swap:         7167          0       7167
    

    我的实例的状态是:传递了2/2个检查。我无法弄清楚我的网站有什么问题。

    有时,它工作正常,但有时我会收到此错误。有谁能告诉我出了什么问题?

1 个答案:

答案 0 :(得分:1)

我从评论中复制了文本(AWS ELB在流量高峰时不能很好地扩展。如果你在5分钟内看到超过50%的峰值,并且你的CPU没有达到最大值,那么你的Apache MaxClients限制未被最大化,很可能是ELB)。

如果问题是ELB,您有几个选择:

  • 如果您有权访问AWS支持,您可以安排预热ELB,以便在流量激增时不会出现容量。
  • 如果没有,你可以使用siege或apache ab这样的简单脚本自行预热ELB,逐渐增加流量,达到你需要的限制。每5分钟不要添加超过50%的流量。
  • 如果您有指向ELB主机名的CNAME记录,请确保记录上设置的TTL为60秒。 ELB扩展的方式是将DNS记录更改为越来越大的实例。如果您在自己的CNAME记录中拥有较高的TTL,那么您将会将流量定向到旧的和功能不足的实例。
  • 您也可以切换到自己的负载平衡解决方案。我们过去已经做到了这一点,因为我们面临着非常不可预测的流量。我强烈推荐HAProxy,因为它非常容易配置且非常可靠。缺点是你必须自己扩展它,它的成本将超过ELB成本的20美元/月。