流量增加后,AWS服务器变慢

时间:2017-11-08 05:14:48

标签: ruby-on-rails ruby postgresql api amazon-web-services

我有一个单页Angular应用程序,它向Rails API服务发出请求。两者都在t2xlarge Ubuntu实例上运行。我正在使用Postgres数据库。

我们的流量增加了,我的Rails API变慢了。有时候,我收到一条错误,说“铁路应用程序的乘客队列已满”。

服务器上的自动缩放功能正常;再创建三个实例。但我无法追查这个问题。我需要root访问权限升级,这是我没有的。请帮帮我。

4 个答案:

答案 0 :(得分:2)

正如您所提到的那样,您正在使用T2.2xlarge实例类型。首先我想告诉你不要在生产环境中使用T2实例类型。 T2实例的原因使用CPU Credit。让我们来看看this

  

如果我使用所有积分会怎样?

     

如果您的实例使用其所有CPU余额,性能   保持基准表现水平。如果您的实例正在运行   信用额度低,您的实例的CPU信用消耗(因此   CPU性能)逐渐降低到基本性能水平   超过15分钟的间隔,所以你不会经历一个尖锐的   当您的CPU积分耗尽时性能下降。如果你的   实例始终使用其所有CPU余额,我们建议   较大的T2大小或固定的性能实例类型,如M3或   C3

我不确定你是不是面对out of CPU Credit problem,因为你使用的是Xlarge类型,但我认为你应该使用其他fixed performance instance types。因此,实例的性能可能是问题的一部分。您应该使用cloudwatch监控2个指标:CPUCreditUsage and CPUCreditBalance以确保问题。

其次,你的ASG怎么样?横向扩展后,您的服务是否稳定?如果是这样,我认为你不再关心这个问题,因为ASG做了它的责任。

答案 1 :(得分:0)

请检查以下

  • 如果要打开与数据库的连接,请确保将其关闭。

    • 如果您使用的是jquery,bootstrap,datatables或其他css库,请使用CDN链接,例如

    <link rel="stylesheet" ref="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.12.4/css/bootstrap-select.min.css">

    • 它将减少服务器上的大量负载。当您可以直接从其他服务器上获取jquery或其他外部库时,请不要复制它们。

答案 2 :(得分:0)

有许多因素可能导致EC2实例(或任何系统)看起来运行缓慢。

  1. CPU使用率。 CPU使用率越高,处理新线程和进程的时间越长。
  2. 免费记忆。您的系统需要可用内存来处理线程,创建新进程等。您有多少可用内存?
  3. 免费磁盘空间。当系统驱动器上的文件系统在可用磁盘空间上运行不足时,操作系统会发生颠簸。你有多少可用磁盘空间?
  4. 网络带宽。您的平均输入/输出的平均字节数是多少 实例
  5. 数据库。监控连接,可用内存,磁盘带宽等。
  6. 亚马逊拥有CloudWatch,可以为您提供除可用磁盘空间以外的所有内容的监控(您可以为此指标添加代理到您的实例)。这也可以帮助您快速查看实例发生的情况。

    监控您的EC2实例和您的数据库。

    你提到T2实例。这些是可突发的CPU,这意味着如果你的CPU使用率一致,那么你将需要切换到固定性能的EC2实例。 CloudWatch应该帮助您找出所需内容(CPU或内存或磁盘或网络性能)。

答案 3 :(得分:0)

这完全独立于AWS Server。看起来你的软件需要更多的果汁(RAM,StorageIO,网络),而且一台机器还不够。您需要使用cloudwatch评估指标,并根据软件需要调整软件需求。

可能是内存泄漏或处理泄漏也可能导致此问题。您需要创建集群或服务器场来处理负载。

希望它有所帮助。