day93-パフォーマンスストレステスト-最適化-単純な最適化スループットテスト(ログレベルの調整、thymeleafテンプレートのオープン、インデックスの追加)

現在、ホームページだけにアクセスするための圧力テストは、ミドルウェアの要求を通過しません。

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を分離することが含まれます。

 

 

 

おすすめ

転載: blog.csdn.net/JavaCoder_juejue/article/details/113591070