如何根据内存设置自动扩展策略

我能够设置自动扩展策略,也testing工作正常,我使用EC2小实例运行Ruby on Rails的应用程序,因为Rails是更多的内存激烈的平台我想扩大的EC2实例基于内存不在CPU利用率。 我昨天Googlesearch,但没有取得任何结果,实际上帮助我。

任何的意见都将会有帮助。

EC2上的自动缩放基于Cloudwatch的触发器。 默认情况下,Cloudwatch不收集有关内存使用情况的数据( 官方原因是这些度量标准需要查看实例中运行的操作系统)

因此,解决scheme是设置一个自定义度量来监视内存使用情况,将警报添加到该度量标准,然后将您的缩放策略build立在该警报之外。

亚马逊在这个论坛post里描述了这个过程。

首先,你有一个脚本来收集“自由”(从上面的页面复制)的数据:

#!/bin/bash export AWS_CLOUDWATCH_HOME=/home/ec2-user/CloudWatch-1.0.12.1 export AWS_CREDENTIAL_FILE=$AWS_CLOUDWATCH_HOME/credentials export AWS_CLOUDWATCH_URL=https://monitoring.amazonaws.com export PATH=$AWS_CLOUDWATCH_HOME/bin:$PATH export JAVA_HOME=/usr/lib/jvm/jre # get ec2 instance id instanceid=`wget -q -O - http://169.254.169.254/latest/meta-data/instance-id` memtotal=`free -m | grep 'Mem' | tr -s ' ' | cut -d ' ' -f 2` memfree=`free -m | grep 'buffers/cache' | tr -s ' ' | cut -d ' ' -f 4` let "memused=100-memfree*100/memtotal" mon-put-data --metric-name "FreeMemoryMBytes" --namespace "System/Linux" --dimensions "InstanceId=$instanceid" --value "$memfree" --unit "Megabytes" mon-put-data --metric-name "UsedMemoryPercent" --namespace "System/Linux" --dimensions "InstanceId=$instanceid" --value "$memused" --unit "Percent" 

该脚本从“free”列下的“ – / + buffers / cache”行中获取数字,作为“total”(在“Mem”行下)的百分比,并设置2个度量 – 使用的内存百分比,以MB为单位的总内存空间。

所有的AWS API工具都非常慢(相对来说) – 如果可能的话,直接从一些支持的语言(例如Ruby)使用API​​,您将获得比上述脚本更好的性能。

修改上面的脚本以满足您的需要(您可能不需要这两个指标等),并将其设置为每隔几分钟通过cron运行。 请记住,您可以免费获得有限数量的自定义/详细指标和警报,之后是每月费用。

还有一个谷歌代码项目 – “ Aws Missing Tools ”,它具有监视内存使用情况的脚本以及其他一些可能有用的指标。

一旦完成了度量标准的设置和运作,就可以为其创build一个警报,并按照任何预定义的度量标准继续进行自动调整( as-put-scaling-policy等)。

亚马逊刚刚更新( 2013年2月 )CloudWatch的脚本,现在您可以select观看相当多的信息:

  • 内存利用率 – 由应用程序和操作系统分配的内存,不包括caching和缓冲区,以百分比表示。
  • 使用的内存 – 由应用程序和操作系统分配的内存(不包括caching和缓冲区),以兆字节为单位。
  • 可用内存 – 可用于应用程序和操作系统的系统内存,以兆字节为单位。
  • 磁盘空间利用率 – 以百分比表示的磁盘空间利用率。
  • 使用的磁盘空间 – 千兆字节的磁盘空间使用情况。
  • 可用磁盘空间 – 以GB为单位的可用磁盘空间。
  • 交换空间利用率 – 交换空间利用率的百分比。
  • 使用交换空间 – 以兆字节为单位交换空间使用量。

您可以下载适用于Linux的CloudWatch Monitoring Scripts,并查看完整的文档。

完整的AWS公关来源: http : //aws.typepad.com/aws/2013/02/cloudwatch-monitoring-scripts-updated.html