目次
パフォーマンスを向上させるために実行される可能性のある構成は次のとおりです:
ホームページ Java &#&チュートリアル Spring Boot アプリケーションのパフォーマンスの向上 - パート II

Spring Boot アプリケーションのパフォーマンスの向上 - パート II

Aug 28, 2024 am 06:35 AM

Melhorando o desempenho de aplicações Spring Boot - Parte II

この記事の最初の部分では、TomcatUndertow に置き換えて、アプリケーションのパフォーマンスを向上させる方法を学びました。データ圧縮を有効にして構成することに加えて、ネットワーク上を移動する HTTP 応答のサイズを削減するための高性能 Web サーバー。

ここで、永続化の部分で Spring Boot アプリケーションのパフォーマンスを向上させる方法について説明しますが、その前に、JPAHibernate、および Hikari.

JPA

JPA または

Java Persistence API (後に Jakarta Persistence に名前変更されました) は、共通のデータ永続フレームワークのインターフェース。

JPA 仕様は、ベンダー固有のマッピング実装に依存するのではなく、内部的にオブジェクト リレーショナル マッピングを定義します。

休止状態

Hibernate は、JPA 仕様の具体的な実装を行う ORM フレームワークの 1 つです。言い換えれば、この仕様で、永続化削除更新、およびデータのフェッチのメソッドの必要性が説明されている場合、誰が行うのでしょうか。これらの動作を実際に構築するのは、Hibernate と、別の ORM である EclipseLink です。 🎜>. ヒカリ

Hikari接続プーリング フレームワークであり、データベースへの接続を管理し、再利用できるように接続を開いた状態に保ちます。 、これは将来のリクエストのための接続のキャッシュであり、データベースへのアクセスが高速になり、作成される新しい接続の数が減ります。 ヒカリ、JPA、および休止状態の構成

パフォーマンスを向上させるために実行される可能性のある構成は次のとおりです:

application.yml の使用:


application.properties の使用:
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

ヒカリ

    spring.datasource.hikari.auto-commit: false の場合、
  • 接続プール

    によって返されるすべての接続は、自動コミット が無効になります。

  • spring.datasource.hikari.connection-timeout: クライアントが
  • プール

    からの接続を待機する時間 (ミリ秒単位)。クライアントを無期限に待機させるよりも、すぐに失敗してエラー メッセージを返すために短いタイムアウトを設定することをお勧めします。

  • spring.datasource.hikari.max-lifetime: 接続がアクティブな状態を維持できる最大時間。長時間アクティブな接続は攻撃に対してより脆弱であるため、問題のある接続による障害を回避し、セキュリティを強化するには、このパラメータの構成が重要です。
  • spring.datasource.hikari.maximum-pool-size:
  • プール

    の最大サイズ (アイドル状態および使用中の接続を含み、データベースへのアクティブな接続の最大数を決定します)。プールがこの制限に達し、アイドル状態の接続がない場合、getConnection() の呼び出しは失敗するまで最大 connectionTimeout ミリ秒間ブロックされます。

    多くの人は 50、70、さらには 100 に設定すると優れたパフォーマンスが得られると考えているため、適切な値を見つけることが重要です。理想的なのは、
      スレッド
    • の数である最大 20 にすることです。接続を使用して並列に実行します。 値が大きいほど、データベースによるこれらの接続の管理が難しくなり、これらすべての接続を使用するのに十分な
    • スループット
    • が得られなくなる可能性が高くなります。
    • RDBMS
    • (リレーショナル データベース管理システム) の観点からは、それ自体とのオープンな接続を維持するのは困難であることを理解することが重要です。n 個の接続を想像してください。接続。
  • spring.datasource.hikari.minimum-idle: 需要が低いときにプールが維持する接続の最小数。プールは接続を最大 10 まで削減し、必要に応じて再作成できます。ただし、パフォーマンスを最大化し、需要のスパイクへの対応を向上させるには、この値を設定しないことをお勧めします。これにより、Hikari は固定サイズのプールとして機能します。デフォルト: spring.datasource.hikari.maximum-pool-size.
  • と同じ
  • spring.datasource.hikari.pool-name: 接続 プール のユーザー定義名。 を識別するために主にレジストリ管理コンソールと JMX に表示されます。プール とその設定

JPA

  • 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 の動作を構成します。次の値を指定できます:

    • none: 何もしません。私たちは銀行のスキーマを手動で管理します。
    • validate: データベース スキーマ を検証しますが、変更は行いません。これは、現在のスキーマがマッピングしたエンティティと一致していることを確認するのに役立ちます。
    • update: データベース スキーマ を更新して、エンティティの変更を反映します。
    • create: データベーススキーマを作成します。 スキーマがすでに存在する場合は、削除して再度作成します。
    • create-drop: データベースから スキーマ を作成し、アプリケーションの終了時に スキーマ を削除します。各テストでクリーンなデータベースが必要なテストに役立ちます。
  • spring.jpa.properties.hibernate.generate_statistics: クエリの実行時間、実行されたクエリの数、その他のメトリクスなど、Hibernate に関する詳細情報を収集するのに役立ちます。

  • spring.jpa.properties.hibernate.connection.provider_disables_autocommit: Hibernate に、プロバイダーの 自動コミット を無効にしたことを通知します。 (PostgreSQLMySQL など)。 Hibernate は、auto-commit が有効かどうかを知るために pool から接続を取得する必要があるため、これはパフォーマンスに影響します。 . 、彼が行うすべての取引に対して。

これで記事の後半を閉じます。存在するすべての設定がパフォーマンスに関するものではありませんが、実際に影響を与えるのは、自動コミットプール サイズ などの Hikari 設定です。 、JPA および Hibernate のような OSIV (Open Session In View)そして、プロバイダからの自動コミットを無効にしたことをお知らせします。

次のパートでは、例外と、JVM (Java 仮想マシン) リソースを節約するための例外の設定方法について説明します。

参考文献:

  • https://en.wikipedia.org/wiki/Jakarta_Persistence
  • https://www.ibm.com/docs/pt-br/was/8.5.5?topic=SSEQTP_8.5.5/com.ibm.websphere.nd.multiplatform.doc/ae/cejb_persistence.htm
  • https://github.com/brettwooldridge/HikariCP
  • https://github.com/corona-warn-app/cwa-server/issues/556
  • https://medium.com/@rafaelralf90/open-session-in-view-is-evil-fd9a21645f8e

以上がSpring Boot アプリケーションのパフォーマンスの向上 - パート IIの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

ホットトピック

Java仮想スレッドパフォーマンスベンチマーク Java仮想スレッドパフォーマンスベンチマーク Jul 21, 2025 am 03:17 AM

仮想スレッドには、非常に並行したシナリオとIO集約型シナリオに大きなパフォーマンスの利点がありますが、テスト方法と適用可能なシナリオに注意を払う必要があります。 1.正しいテストでは、実際のビジネス、特にIOブロッキングシナリオをシミュレートし、JMHやガトリングなどのツールを使用してプラットフォームスレッドを比較する必要があります。 2。スループットのギャップは明らかであり、スケジューリングがより軽量で効率的であるため、100,000の同時リクエストよりも数倍から10倍高くなる可能性があります。 3。テスト中に、盲目的に高い並行性数を追求し、非ブロッキングIOモデルに適応し、レイテンシやGCなどの監視インジケーターに注意を払う必要があります。 4.実際のアプリケーションでは、Webバックエンド、非同期タスク処理、および多数の同時のIOシナリオに適していますが、CPU集約型タスクはプラットフォームスレッドまたはForkjoinpoolに依然として適しています。

Javaにリンクリストを実装します Javaにリンクリストを実装します Jul 20, 2025 am 03:31 AM

リンクリストを実装する鍵は、ノードクラスを定義し、基本操作を実装することです。 firstデータや次のノードへの参照を含むノードクラスを作成します。次に、LinkedListクラスを作成し、挿入、削除、および印刷機能を実装します。 deppentedメソッドは、テールにノードを追加するために使用されます。 printlistメソッドを使用して、リンクリストのコンテンツを出力します。 dreatewithValueメソッドは、指定された値を持つノードを削除し、ヘッドノードと中間ノードのさまざまな状況を処理するために使用されます。

JDBCを使用してJavaのトランザクションを処理する方法は? JDBCを使用してJavaのトランザクションを処理する方法は? Aug 02, 2025 pm 12:29 PM

JDBCトランザクションを正しく処理するには、最初に自動コミットモードをオフにし、次に複数の操作を実行し、結果に応じて最終的にコミットまたはロールバックする必要があります。 1。CONN.SETAUTOCOMMIT(FALSE)を呼び出して、トランザクションを開始します。 2。挿入や更新など、複数のSQL操作を実行します。 3。すべての操作が成功した場合はconn.commit()を呼び出し、データの一貫性を確保するために例外が発生した場合はconn.rollback()を呼び出します。同時に、リソースを使用してリソースを管理し、例外を適切に処理し、接続を密接に接続するために、接続の漏れを避けるために使用する必要があります。さらに、接続プールを使用してセーブポイントを設定して部分的なロールバックを達成し、パフォーマンスを改善するためにトランザクションを可能な限り短く保つことをお勧めします。

Java Microservices Serviceメッシュ統合 Java Microservices Serviceメッシュ統合 Jul 21, 2025 am 03:16 AM

ServiceMeshは、Java Microservice Architectureの進化のための避けられない選択であり、その中心はネットワークロジックとビジネスコードの分離にあります。 1. ServiceMeshは、ビジネスに焦点を当てるために、サイドカーエージェントを介したロードバランシング、ヒューズ、監視、その他の機能を処理します。 2。ISTIO使節は中程度および大規模なプロジェクトに適しており、Linkerdは軽量で小規模な試験に適しています。 3. Java Microservicesは、発見とコミュニケーションのために、装い、リボン、その他のコンポーネントを閉鎖し、IStiodに引き渡す必要があります。 4.展開中にサイドカーの自動注入を確保し、トラフィックルールの構成、プロトコル互換性、ログトラッキングシステムの構築に注意を払い、増分移行とコントロール前の監視計画を採用します。

高度なJavaコレクションフレームワークの最適化 高度なJavaコレクションフレームワークの最適化 Jul 20, 2025 am 03:48 AM

Java Collection Frameworkのパフォーマンスを向上させるために、次の4つのポイントから最適化できます。1。アレイリストへの頻繁なランダムアクセス、ハッシュセットへのクイック検索、同時環境の同時ハッシュマップなど、シナリオに従って適切なタイプを選択します。 2.初期化中に容量と荷重係数を合理的に設定して、容量の拡張オーバーヘッドを減らしますが、メモリ無駄を避けます。 3.不変のセット(list.of()など)を使用して、一定または読み取り専用データに適したセキュリティとパフォーマンスを改善します。 4.メモリの漏れを防ぎ、弱い参照またはプロのキャッシュライブラリを使用して、長期生存セットを管理します。これらの詳細は、プログラムの安定性と効率に大きく影響します。

SpringとGuiceを使用したJavaでの依存関係のマスタリング SpringとGuiceを使用したJavaでの依存関係のマスタリング Aug 01, 2025 am 05:53 AM

依存関係の指示(di)isadesignpatternwhere objectsreceivedenciesiesedternally、setter、orfieldinoffiction.2.springframeworkusessaNnotationslike@component、@service、@autowiredwithjava Basedconfi

Javaフレームワークの比較:Spring Boot vs Quarkus vs Micronaut Javaフレームワークの比較:Spring Boot vs Quarkus vs Micronaut Aug 04, 2025 pm 12:48 PM

Pre-formanceTartuptimeMemoryusage、quarkusandmicronautleadduetocopile-timeprocessingingandgraalvsupport、withquarkusoftentylightbetterine serverlessシナリオ。

Jakarta EEとJavaにRESTFUL APIを構築します Jakarta EEとJavaにRESTFUL APIを構築します Jul 30, 2025 am 03:05 AM

setupamaven/gradleprojectwithjax-rsdependencieslikejersey; 2.createarestresourceingnotationssuchas@pathand@get; 3.configuretheapplicationviaapplicationubclassorweb.xml;

See all articles