4

EC2 インスタンスに Rails アプリケーションをデプロイしています。ここで、Auto Scaling を Elastic Load Balancer で使用するように設定したいと考えています。特定のしきい値で、新しいインスタンスを生成したいと考えています。Auto Scaling グループのトリガーを構成する際に、CPU 使用率、ネットワークまたはディスク IO のオプションがあります。しかし、Rails アプリケーションであるため、CPU や IO ではなくメモリのリソース不足に直面します。

Rails アプリケーションの EC2 Auto Scaling を正常に構成した人はいますか? Rails で AWS を使用する好ましい方法は何ですか?

参考までに、パッセンジャーをアプリケーション サーバーとして使用しています。

御時間ありがとうございます。

4

3 に答える 3

1

Rails では実行していませんが、Tomcat の Java を使用しています。Tomcat バルブ/スクリプトを使用してメモリ使用量を検出し、カスタム クラウド ウォッチ メトリクスとして Amazon cloudWatch に投稿しました。このメトリクスを監視する cloudwatch アラームに基づいて、スケールアウト トリガーを作成できます。

上記のテクニックのいくつかのセクションは、レール用に重ねることもできます。

于 2013-05-29T12:38:40.600 に答える
1

実際には、使用しているインスタンス タイプに基づいて Passenger 構成を調整する必要があると思います (これに関する記事は次のとおりです: http://blog.scoutapp.com/articles/2009/12/08/production-rails-チューニング-with-passenger-passengermaxprocesses )。これにより、全負荷時に利用可能なすべての RAM を使用していることが保証されますが、利用可能な RAM よりも多くのパッセンジャー インスタンスが生成されることはありません。

私の経験では、これによりすべてのリソース (CPU と RAM) が飽和状態になり、CPU 使用率に基づいて自動スケーリング ポリシーをトリガーできます。また、最高のパフォーマンスを達成するためにインスタンス タイプを微調整する必要があります (かなりの成功を収めた cc1.xlarge インスタンスを使用しました)。

RAM に基づく自動スケーリングを設定している場合は、CloudWatch で RAM の使用状況を監視するメトリックを作成し、そのメトリックを使用して自動スケーリングできるはずです。メトリクスの作成は、CloudWatch API ( http://docs.aws.amazon.com/AWSRubySDK/latest/AWS/CloudWatch/Metric.html )を使用して定期的にメトリクス データを公開するだけです。毎分実行され、メトリック データを公開する Rails バックグラウンド タスクを作成できます。

于 2013-10-30T10:03:31.203 に答える
0

i think you can use the new signaling feature, monitor the memory metric and start the instance using api:

http://aws.typepad.com/aws/2010/12/amazon-cloudwatch-alarms.html

于 2010-12-09T19:45:00.347 に答える