HAProxy で負荷分散を行い、LAMP アプリケーションを実行する 3 つのノードのクラスターをセットアップしました。次に、システムを最適化して負荷テストを行いたいと思います。そこで、アイルランド地域から 15 個の AWS-t1.micro インスタンスを起動する jmeter-ec2 を使用して、ドイツの専用データセンターにあるクラスターに対して jmeter テストを実行します。
問題は、サーバーが 0.5 の負荷ではほとんどスウィートしないのに対し、jmeter は約 70 tps しか報告しないことです。ボトルネックがどこにあるのか、なぜシステムがそれ以上の tps を提供しないのか疑問に思っています。
この問題にアプローチして、サービスを 1 つずつ調整する方法を知りたいです。アプリを実行するために、MySQL Galera、Apache、NginX、Solr が実行されており、すべてデフォルトの構成設定になっています。クラスターは、ギガビット LAN で相互接続された 32 GB RAM と 4 つの XEON CPU を搭載した 3 つの新しいベアメタル ノードで構成されています。
システムを体系的に調整/構成する方法について役立つ情報をいただければ幸いです。
答え1
システムの一部を削除してボトルネックを見つけてみてください。15 台のテスト サーバーは、かなり多いですね。1 つのテスト ユニットから 1000 の TPS を取得できるはずです。HAProxy に応答を待機するように要求していませんか? つまり、maxconns 機能とキューイング機能を利用していますか? 前に言ったように、単純化してみてください。ただし、HAProxy が原因だと思われる場合は、構成を投稿してください。
答え2
私にとって、テストクライアントは明らかに問題だと思います。
- t1.micro を使用しています。これらは基本的に無料であり、無料であるのには理由があります。テストには、少なくとも m3.medium、large、または xlarge を使用するように切り替えてください。終了したらシャットダウンできます。
AmazonドキュメントからのコメントT1 マイクロインスタンスよくまとめています。
「スパイキーなパフォーマンス」、
「1分あたり10件のリクエストをサポートするように設計されています」
しかし、ベンチマークのためには、サーバーを圧倒する必要があります。1 秒あたり数百のリクエストが必要です。これは、これらの製品で提供できるよりも少し多いです。
テスト クラスターはテスト クライアントのローカルではないため、余分な遅延が発生します。クラスターは 1600 キロメートル離れた別の国にあります。これも役に立ちません。したがって、ポイント 3 に注意してください。
テスト クライアントがマルチスレッドで実行されていることを確認します。
エンドポイントのテストには、EU (アイルランド) - eu-west-1 を使用するのが適しています。