現在、ホームページだけにアクセスするための圧力テストは、ミドルウェアの要求を通過しません。
1.第1レベルの分類を取得するための圧力テスト
以前と同じようにスレッドグループを追加し、httpリクエストを追加します
一定期間安定して実行した後、集計レポートを表示します
集計レポートに基づいてフォームに記入します
jvisualvmを開くと、Eden Parkのメモリが小さいため、マイナーgcが非常に頻繁に発生し、効率に大きく影響することがわかりました。
2.3レベルの分類データをすべて取得するための圧力テスト
httpリクエストを追加
集計レポートを表示する
フォームに記入してください。ここでの応答時間は少し法外です。応答時間は参考です。主にスループットに依存します。別のマシンを使用して圧力テストを行う場合、結果データは標準になります。問題。
3.ホームページのすべてのコンテンツを取得するための圧力テスト(第1レベルの分類に加えて、ページの静的リソースも含まれます)
高度な次の設定の下で
ストレステストの第1レベルの分類と同じように、httpリクエストを追加します
集計レポートを表示する
フォームに記入する
4.最適化計画について考えます
前回の記事では、ミドルウェアがパフォーマンスに与える影響をはっきりと見ることができます。次に、圧力テストで長い間学んだパフォーマンス低下の原因となるポイントをリストします。
(1)ミドルウェア:ミドルウェアが多いほど、パフォーマンスの低下が大きくなり、ネットワークの相互作用で無駄になります。
(2)db:言うまでもなくこれ
(3)tymeleaf:テンプレートのレンダリング速度
(4)静的リソース:静的リソースは引き続きプロジェクトに配置されます。取得するには、Tomcatにもリクエストを送信する必要があります。
5.ハンズオン
(1)tymeleafテンプレートキャッシュがオンになっている
tymeleafテンプレートのキャッシュは以前は閉じていましたが、現在は開いています
静的リソースを取得しないでください
もう一度テストする
以前と比較して、スループットは数十増加しました
以前は230以上でしたが、現在は290前後です。
(2)データベースの最適化
ログレベルを調整し、インデックスを追加します
以前のすべてのデータベースクエリは出力されます。つまり、ローカルであり、環境を配置してエラーレベルに変更します。
変更後
インデックスを追加するには、parent_cidフィールドを使用して第1レベルの分類をクエリします
計算クエリ時間を追加する
@Override
public List<CategoryEntity> findCatelog1s() {
long l = System.currentTimeMillis();
List<CategoryEntity> categoryEntities = this.list(new QueryWrapper<CategoryEntity>().eq("parent_cid", 0));
System.out.println("消耗时间:"+(System.currentTimeMillis()-l));
return categoryEntities;
}
インデックスを追加
インデックスを追加する前に
インデックスを追加した後でも、平均してはるかに高速です。
6.最適化された圧力テスト
上記のtymeleafキャッシュを開き、ログレベルをエラーに調整してインデックスを追加してから、前のリクエストを再テストしました。
ファーストクラスの分類
3レベルの分類
完全なデータ(第1レベルの分類+静的リソース)
フォームに記入する
全量のデータの取得に加えて、他のリクエストのパフォーマンスが大幅に向上していることがわかりました。そのため、静的リソースのリクエストは引き続きTomcatを介して行われます。
これには、次の記事で動的nginxと静的nginxを分離することが含まれます。