この記事の最初の部分では、Tomcat を Undertow に置き換えて、アプリケーションのパフォーマンスを向上させる方法を学びました。データ圧縮を有効にして構成することに加えて、ネットワーク上を移動する HTTP 応答のサイズを削減するための高性能 Web サーバー。
ここで、永続化の部分で Spring Boot アプリケーションのパフォーマンスを向上させる方法について説明しますが、その前に、JPA、Hibernate、および Hikari.
JPAJava Persistence API (後に Jakarta Persistence に名前変更されました) は、共通のデータ永続フレームワークのインターフェース。
JPA 仕様は、ベンダー固有のマッピング実装に依存するのではなく、内部的にオブジェクト リレーショナル マッピングを定義します。
休止状態Hibernate は、JPA 仕様の具体的な実装を行う ORM フレームワークの 1 つです。言い換えれば、この仕様で、永続化、削除、更新、およびデータのフェッチのメソッドの必要性が説明されている場合、誰が行うのでしょうか。これらの動作を実際に構築するのは、Hibernate と、別の ORM である EclipseLink です。 🎜>. ヒカリ
Hikari は 接続プーリング フレームワークであり、データベースへの接続を管理し、再利用できるように接続を開いた状態に保ちます。 、これは将来のリクエストのための接続のキャッシュであり、データベースへのアクセスが高速になり、作成される新しい接続の数が減ります。 ヒカリ、JPA、および休止状態の構成
application.yml の使用:
spring: hikari: auto-commit: false connection-timeout: 250 max-lifetime: 600000 maximum-pool-size: 20 minimum-idle: 10 pool-name: master jpa: open-in-view: false show-sql: true hibernate: ddl-auto: none properties: hibernate.connection.provider_disables_autocommit: true hibernate.generate_statistics: true
spring.datasource.hikari.auto-commit=false spring.datasource.hikari.connection-timeout=50 spring.datasource.hikari.max-lifetime=600000 spring.datasource.hikari.maximum-pool-size=20 spring.datasource.hikari.minimum-idle=10 spring.datasource.hikari.pool-name=master spring.datasource.jpa.open-in-view=false spring.datasource.jpa.show-sql=true spring.datasource.jpa.hibernate.ddl-auto=none spring.jpa.properties.hibernate.generate_statistics=true spring.jpa.properties.hibernate.connection.provider_disables_autocommit=true
ヒカリ
によって返されるすべての接続は、自動コミット が無効になります。
からの接続を待機する時間 (ミリ秒単位)。クライアントを無期限に待機させるよりも、すぐに失敗してエラー メッセージを返すために短いタイムアウトを設定することをお勧めします。
の最大サイズ (アイドル状態および使用中の接続を含み、データベースへのアクティブな接続の最大数を決定します)。プールがこの制限に達し、アイドル状態の接続がない場合、getConnection() の呼び出しは失敗するまで最大 connectionTimeout ミリ秒間ブロックされます。
多くの人は 50、70、さらには 100 に設定すると優れたパフォーマンスが得られると考えているため、適切な値を見つけることが重要です。理想的なのは、spring.datasource.hikari.pool-name: 接続 プール のユーザー定義名。 を識別するために主にレジストリ管理コンソールと JMX に表示されます。プール とその設定
spring.datasource.jpa.open-in-view: OSIV (Open Session In View) が有効な場合、セッションはリクエスト全体にわたって維持されます。 @Transactional アノテーションなし。セッションはリクエストが終了するまでデータベースへの接続を維持するため、アプリケーションの応答がなくなるなど、パフォーマンスの問題が発生する可能性があります。
spring.datasource.jpa.show-sql: アプリケーションで実行されている SQL ログを表示します。通常、開発時は有効のままにしておきますが、本番環境では無効にします。
spring.datasource.jpa.hibernate.ddl-auto: データベース スキーマ に関連して Hibernate の動作を構成します。次の値を指定できます:
spring.jpa.properties.hibernate.generate_statistics: クエリの実行時間、実行されたクエリの数、その他のメトリクスなど、Hibernate に関する詳細情報を収集するのに役立ちます。
spring.jpa.properties.hibernate.connection.provider_disables_autocommit: Hibernate に、プロバイダーの 自動コミット を無効にしたことを通知します。 (PostgreSQL、MySQL など)。 Hibernate は、auto-commit が有効かどうかを知るために pool から接続を取得する必要があるため、これはパフォーマンスに影響します。 . 、彼が行うすべての取引に対して。
これで記事の後半を閉じます。存在するすべての設定がパフォーマンスに関するものではありませんが、実際に影響を与えるのは、自動コミット や プール サイズ などの Hikari 設定です。 、JPA および Hibernate のような OSIV (Open Session In View)そして、プロバイダからの自動コミットを無効にしたことをお知らせします。
次のパートでは、例外と、JVM (Java 仮想マシン) リソースを節約するための例外の設定方法について説明します。
参考文献:
以上がSpring Boot アプリケーションのパフォーマンスの向上 - パート IIの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。