Serverless App Engine (SAE) は、トラフィックの変更を処理し、ビジネスの安定性を確保するための自動スケーリングポリシーを提供します。 アプリケーションの自動スケーリングポリシーを設定すると、ピーク時にはアプリケーションが自動的にスケールアウトされ、オフピーク時にはスケールインされます。 メンテナンスフリーの自動スケーリング機能は、低コストで高い信頼性を提供します。 たとえば、プラットフォームの高い安定性を確保し、eコマースのプロモーション活動中に顧客の要件に迅速に対応するために、SAEを使用してアプリケーションをデプロイし、自動スケーリングポリシーを構成できます。 SAEは、関連するポリシーをリアルタイムで監視および変更するのに役立ちます。 後続のO&M最適化を効率的に実行できます。
自動スケーリングの設定プロセス
次の図は、SAE自動スケーリングを設定するプロセスを示しています。
準備
アプリケーションのヘルスチェックを設定します。 この構成により、アプリケーションの可用性が保証されます。 アプリケーションは、アプリケーションインスタンスが起動、実行、および準備完了後にのみトラフィックを受信できます。 詳細については、「アプリケーションヘルスチェックの設定」をご参照ください。
アプリケーションのライフサイクル管理を設定します。 これにより、スケールイン操作が実行されたときに、アプリケーションを期待どおりに適切にシャットダウンできるようになります。 アプリケーションのライフサイクル管理を設定するには、PreStop設定を設定します。 詳細については、「アプリケーションライフサイクル管理の設定」をご参照ください。
指数再試行メカニズムを設定します。 スケーリングの早さ、アプリケーションの起動の早さ、またはアプリケーションの正常な起動またはシャットダウンがないために発生する可能性のあるサービス呼び出しエラーを防ぐために、Java指数関数的再試行メカニズムを設定できます。
アプリケーションの起動速度を最適化します。
ソフトウェアパッケージを最適化します。 アプリケーションの起動時間を最適化して、クラスの読み込みやキャッシュなどの外部要因の影響を減らすことができます。
画像を最適化します。 イメージのサイズを小さくして、インスタンスの作成時にイメージプルに必要な時間を短縮できます。 オープンソースツールを使用して、画像レイヤー情報を分析および簡略化できます。
Javaアプリケーションの起動を最適化します。 SAEコンソールでJavaアプリケーションを作成するときに、Dragonwell 11環境を選択し、アプリケーションの起動アクセラレーション機能を有効にします。 詳細については、「Javaアプリケーションの起動アクセラレーションの設定」をご参照ください。
自動スケーリングポリシーの設定
自動スケーリング指標の設定
SAEを使用すると、CPU感度、メモリ感度、I/O感度などの現在のアプリケーションの属性に基づいて、基本監視モジュールとアプリケーション監視モジュールで複数のメトリックを柔軟に設定できます。
過去6時間、12時間、1日、7日のピーク値、P95またはP99値など、[基本モニタリング] および [アプリケーションモニタリング] モジュールでメトリクスの履歴データを表示し、メトリクスの期待値を推定できます。 アプリケーションのピーク容量を推定するには、パフォーマンステスト (PTS) などのストレステストツールを使用してストレステストを実行し、アプリケーションが処理できる同時リクエストの数、アプリケーションが必要とするCPUコアとメモリサイズ、アプリケーションが高負荷状態で使用する応答方法などの情報を取得します。
自動スケーリングポリシーを設定するときは、次の要因を考慮する必要があります。
ビジネスの可用性とコストの重み。 重みに基づいて、関連メトリックの期待値を指定します。 例:
可用性最適化ポリシーを設定するには、メトリック値を40% に設定します。
可用性とコストバランスのポリシーを設定するには、メトリック値を50% に設定します。
コスト最適化ポリシーを設定するには、メトリック値を70% に設定します。
上流と下流のサービス、ミドルウェア、およびデータベースの依存関係。 スケールアウト操作が実行されるときにエンドツーエンドの可用性を確保するために、依存関係に基づいて自動スケーリングポリシーまたはスロットリングおよびデグラデーション方法を設定します。
設定を構成した後、モニタリングデータに基づいて自動スケーリングポリシーを変更して、指定された容量とアプリケーションの実際の負荷との差を減らすことができます。 モニタリングデータの表示方法については、「基本モニタリング」をご参照ください。
メモリメトリクスの設定
Javaアプリケーションランタイム最適化は、物理メモリを解放し、メモリメトリックとビジネスの間の相関を強化することによって実装されます。 Dragonwellランタイム環境にJava Virtual Machine (JVM) パラメーターを追加して、Javaヒープメモリのスケーリング機能を提供するElasticHeapを有効にすることができます。 これにより、Javaアプリケーションの実行時の物理メモリの実際の使用量が削減されます。 ElasticHeapの詳細については、「G1ElasticHeap」をご参照ください。
Dragonwell環境を選択し、ElasticHeapの定期的なアンコミットを有効にしてメモリを自動的にアンコミットすることを推奨します。 詳細については、「手順」および「起動コマンドの設定」をご参照ください。
Java環境: [JARパッケージの設定] セクションで、[Java環境] ドロップダウンリストから [Dragonwell] 環境を選択します。
JVMパラメーター: [スタートアップコマンドの設定] セクションで、-XX:+ ElasticHeapPeriodicUncommitと入力します。
メモリメトリック構成は、JVMメモリ管理ツールまたはglibc mallocメモリアロケーターを使用して動的メモリ管理を実行するアプリケーション、またはFree操作を実行するアプリケーションには適していません。 アプリケーションのアイドル状態のメモリがタイムリーにオペレーティングシステム用にリリースされない場合、インスタンスによって消費される物理メモリと、新しいインスタンスによって消費される平均メモリをリアルタイムで削減することはできません。 その結果、スケールイン操作を実行することができない。
インスタンスの設定
インスタンスの最小数の指定
インスタンスの最小数を2以上の値に設定し、アプリケーションにマルチゾーンvSwitchを指定します。 基礎となるノード例外が発生した場合、インスタンスが追い出されるか、またはゾーン内でインスタンスが使用できない場合があります。 この場合、アプリケーションは停止されます。 この問題を防ぐために適切な設定を行うことを推奨します。
インスタンスの最大数の指定
インスタンスの最大数を、ゾーン内のIPアドレスの数以下の値に設定します。 設定されたIPアドレスの数が制限を超えた場合、インスタンスをアプリケーションに追加することはできません。 この問題を防ぐために、適切な値を指定することを推奨します。
現在のアプリケーションで使用可能なIPアドレスの数は、[基本情報] ページの [アプリケーション情報] セクションで確認できます。 使用可能なIPアドレスが不十分な場合は、別のvSwitchを使用するか、vSwitchを追加します。 詳細については、「自動スケーリングポリシーの検証」をご参照ください。
スケーリングプロセスを観察する
スケーリング後の最大インスタンス数
[概要] ページで、自動スケーリングポリシーが有効になっているアプリケーションを表示し、インスタンス数が上限に達しているアプリケーションを監視できます。 データに基づいて自動スケーリングポリシーの設定を再評価できます。
50を超えるインスタンスをアプリケーションに追加する場合は、DingTalkグループ32874633に参加して、アカウントをホワイトリストに追加します。
ゾーンのリバランス
自動スケーリングポリシーに基づいてスケールイン操作が実行された後、アプリケーションインスタンスがゾーンに均等に割り当てられない場合があります。 アプリケーションの [基本情報] ページで、各インスタンスが属するゾーンを表示できます。 インスタンスが均等に割り当てられていない場合は、インスタンスを再起動してゾーンのリバランスを実行できます。
自動スケーリングポリシーの自動再開の設定
アプリケーションのデプロイなどの変更順序を解除すると、SAEはアプリケーションの自動スケーリングポリシーを無効にして、2つの操作の競合を防ぎます。 変更順序の完了後に自動スケーリングポリシーを再開する場合は、[アプリケーションのデプロイ] ページで [自動] を選択します。
自動スケーリングポリシーの維持
アプリケーションイベントの表示
アプリケーションの [アプリケーションイベント] ページで、関連する自動スケーリングポリシーの動作情報 (スケール時間やスケールタイプなど) を表示できます。 自動スケーリングポリシーの有効性を評価し、ビジネス要件に基づいてポリシーを変更できます。 詳細については、「アプリケーションイベントの表示」をご参照ください。
アプリケーションインスタンスのモニタリングチャートの表示
アプリケーションの [基本情報] ページの [基本情報] タブで、[アプリケーションインスタンスのトレンドチャート] を表示できます。 このグラフには、CPU使用率、メモリ使用量、アクティブなTCP接続数、サービス要求数、平均応答時間など、過去7日間の測定データが表示されます。 詳細については、「アプリケーションインスタンスのメトリックの表示 (招待プレビュー) 」をご参照ください。