「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Spring Boot アプリケーションのパフォーマンスの向上 - パート I

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

2024 年 9 月 13 日に公開
ブラウズ:329

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

Spring Boot アプリケーションを起動するときは、通常、スターターによって提供されるデフォルト設定を使用します。ほとんどの場合、これで十分です。ただし、パフォーマンスが必要な場合は、この記事の最初の部分で説明するように、特定の調整を行うことができます。

Tomcat を別の サーブレット コンテナ に置き換えます

Spring MVC を使用する アプリケーション webRESTFul は通常、デフォルトで Tomcat をサーバーとして使用する spring-boot-starter-web 依存関係を追加します。 ウェブ。ただし、Undertow など、より興味深い代替手段もあります。これは、非同期でノンブロッキングのアーキテクチャを備えた高性能の web サーバーであり、大量のデータを処理できます。同時接続を効率的に処理できるため、高パフォーマンスのアプリケーションに適しています。 Tomcat が悪いと言っているわけではありませんが、Undertow.

にチャンスを与えることはできます。

UndertowSpringに追加します

Undertowweb サーバーとして使用するには、spring-boot-starter-web がすでに追加している spring-boot-starter-tomcat 依存関係を無視する必要があります。次に、 spring-boot-starter-undertow.

を追加します。

pom.xml の使用:

org.springframework.bootspring-boot-starter-weborg.springframework.bootspring-boot-starter-tomcatorg.springframework.bootspring-boot-starter-undertow

build.gradle の使用:

dependencies {
    implementation('org.springframework.boot:spring-boot-starter-web') {
        exclude group: 'org.springframework.boot', module: 'spring-boot-starter-tomcat'
    }
    implementation 'org.springframework.boot:spring-boot-starter-undertow'
}

引き波の構成

application.properties または application.yml を通じて、サーバーで使用する IO スレッドの数と ワーカー スレッドの数を構成できます。

application.yml の使用

server:
  undertow:
    threads:
      io: 4
      worker: 64

application.properties の使用

server.undertow.threads.io=4
server.undertow.threads.worker=64

I/O スレッド は非ブロッキング操作を実行しますが、アプリケーションに到着する接続をリッスンして処理キューに送信する役割を担うため、ブロッキング操作を実行しないでください。一般的な値は、CPU コアあたり 2 つの I/O スレッドです。

ワーカー スレッドは、I/O スレッドによって処理キューに送信されたサーブレット リクエストなどのブロック操作を実行します。理想的な値はワークロードによって異なりますが、一般的には CPU コアあたり約 10 スレッドを構成することをお勧めします。

さらに詳細な情報と検討できるその他のオプションについては、Undertow ドキュメントを参照してください。

HTTP レスポンスの圧縮

データ圧縮は、HTTP 応答の本文サイズを削減することを目的とした機能です。これにより、ネットワーク上で送信されるデータ量が削減され、アプリケーションのパフォーマンスが向上します。

Spring Boot でのデータ圧縮の構成は、この機能がサポートされているため、簡単な作業です。

application.yml の使用

server:
  compression:
    enabled: true
    mime-types: text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json
    min-response-size: 1024

application.properties の使用

server.compression.enabled=true
server.compression.mime-types=text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json
server.compression.min-response-size=1024

server.compression.enabled: 圧縮を有効または無効にします。
server.compression.mime-types: 圧縮する必要がある MIME タイプのリスト。
server.compression.min-response-size: 圧縮を実行するために必要な「Content-Length」の最小サイズ。

これにて前編を終了とさせていただきます。次のパートでは、Spring Boot アプリケーションのパフォーマンスをさらに向上させるために、Hikari、JPA、Hibernate について詳しく学び、それらを構成する方法を学びます。

リリースステートメント この記事は次の場所に転載されています: https://dev.to/mathstylish/melhorando-a-performance-de-aplicacoes-spring-boot-parte-i-58jl?1 権利侵害がある場合は、[email protected] までご連絡ください。それを削除するには
最新のチュートリアル もっと>
  • React を使用してレシピ ファインダー Web サイトを構築する
    React を使用してレシピ ファインダー Web サイトを構築する
    Introduction In this blog, we'll be building a Recipe Finder Website using React. This app allows users to search for their favorite recipes,...
    プログラミング 2024 年 11 月 7 日に公開
  • Turborepo と Nx: どちらの Monorepo ツールが最適ですか?
    Turborepo と Nx: どちらの Monorepo ツールが最適ですか?
    最新の開発が複雑になるにつれて、モノリポジトリの人気が高まっています。これらにより、複数のプロジェクトまたはパッケージを 1 つのリポジトリに保存できるため、依存関係の管理が簡素化され、より良いコラボレーションが促進されます。モノリポジトリを管理するためのトップ ツールの 2 つは、Turborep...
    プログラミング 2024 年 11 月 7 日に公開
  • Java の配列の概要
    Java の配列の概要
    プログラミングでは多くの場合、大規模なデータセットの管理と操作が必要となるため、効率的かつ効果的なデータ構造が重要です。配列はコンピューター サイエンスの基本的なデータ構造であり、同じタイプの要素の固定サイズのシーケンスを格納する手段を提供します。このブログでは、Java の配列について詳しく説明し...
    プログラミング 2024 年 11 月 7 日に公開
  • CORS 問題を解決する方法
    CORS 問題を解決する方法
    CORS 問題を解決するには、Web サーバー (Apache や Nginx など) またはバックエンド (Django、Go、Node.js など) に適切なヘッダーを追加する必要があります。 、またはフロントエンド フレームワーク (React や Next.js など)。以下は各プラットフォ...
    プログラミング 2024 年 11 月 7 日に公開
  • メモリのアライメントは C 構造体のサイズにどのような影響を与えますか?
    メモリのアライメントは C 構造体のサイズにどのような影響を与えますか?
    C 構造体のメモリ アライメントC 構造体を扱う場合、メモリ アライメントを理解することが重要です。メモリの配置とは、メモリ内の特定の境界にデータを配置することを指します。 32 ビット マシンでは、メモリは通常 4 バイト境界でアライメントされます。構造体のメモリ アライメント次の構造体を考えてみ...
    プログラミング 2024 年 11 月 7 日に公開
  • 人気の観光名所からインスピレーションを得た革新的なプロジェクトの構築: 思い出に残る旅行体験への開発者向けガイド
    人気の観光名所からインスピレーションを得た革新的なプロジェクトの構築: 思い出に残る旅行体験への開発者向けガイド
    開発者として、私たちは周囲の世界からインスピレーションを得ることはよくありますが、信じられないほどの観光名所以上に優れた情報源はあるでしょうか。旅行アプリ、没入型体験、位置情報ベースのサービスのいずれに取り組んでいる場合でも、目的地を際立たせるものを理解することが重要です。アルバニアの最高の観光名所...
    プログラミング 2024 年 11 月 7 日に公開
  • C++ で std::locale を使用して数値をカンマでフォーマットする方法
    C++ で std::locale を使用して数値をカンマでフォーマットする方法
    C でのカンマを使用した数値の書式設定 C では、 std::locale クラスは、カンマを使用して数値を書式設定するロケール依存の方法を提供します。 .std::locale with std::stringstream数値をカンマ付きの文字列としてフォーマットするには、std::locale ...
    プログラミング 2024 年 11 月 7 日に公開
  • Python で素数シーケンス内の奇数の出力を回避するには?
    Python で素数シーケンス内の奇数の出力を回避するには?
    Python で一連の素数を出力する方法多くのプログラマは、Python で素数を正確に出力する関数を作成するのに苦労しています。よくある問題の 1 つは、代わりに奇数のリストを出力することです。この問題を修正するには、素数のプロパティを完全に理解し、コードを変更することが不可欠です。素数は 1 と...
    プログラミング 2024 年 11 月 7 日に公開
  • Pygameでマウスの方向に弾丸を発射するにはどうすればよいですか?
    Pygameでマウスの方向に弾丸を発射するにはどうすればよいですか?
    Pygame でマウスの方向に弾丸を発射する方法Pygame では、マウスの方向に発射される弾丸を作成できます。これを行うには、弾丸を表すクラスを作成し、マウスの位置に基づいてその初期位置と方向を設定する必要があります。弾丸のクラスまず、弾丸のクラスを作成します。このクラスには、弾丸の位置、サイズ、...
    プログラミング 2024 年 11 月 7 日に公開
  • パフォーマンスを最適化するための GG コーディングのヒント: コードの高速化
    パフォーマンスを最適化するための GG コーディングのヒント: コードの高速化
    ソフトウェア開発の世界では、ユーザーが好む高速で応答性の高いアプリケーションを提供するには、コードのパフォーマンスを最適化することが重要です。フロントエンドで作業しているかバックエンドで作業しているかに関係なく、効率的なコードの書き方を学ぶことが不可欠です。この記事では、時間の複雑さの軽減、キャッシ...
    プログラミング 2024 年 11 月 7 日に公開
  • PHP の strtotime() 関数を使用して特定の曜日の日付を見つけるにはどうすればよいですか?
    PHP の strtotime() 関数を使用して特定の曜日の日付を見つけるにはどうすればよいですか?
    特定の曜日(月曜日、火曜日など)の日付を決定する日付スタンプを確認する必要がある場合月曜日、火曜日、その他の平日など、特定の曜日には strtotime() 関数を使用できます。この関数は、今週中に指定された日がまだ発生していない場合に特に便利です。たとえば、次の火曜日の日付スタンプを取得するには、...
    プログラミング 2024 年 11 月 7 日に公開
  • Socket.io と Redis を使用してチャット アプリケーションを構築し、デプロイします。
    Socket.io と Redis を使用してチャット アプリケーションを構築し、デプロイします。
    このチュートリアルでは、Web ソケットを使用してチャット アプリケーションを構築します。 Web ソケットは、リアルタイムのデータ転送を必要とするアプリケーションを構築する場合に非常に役立ちます。 このチュートリアルを終えると、独自のソケット サーバーをセットアップし、リアルタイムでメッセージを送...
    プログラミング 2024 年 11 月 7 日に公開
  • 内部 SQL 結合
    内部 SQL 結合
    SQL 結合はデータベースのクエリの基本であり、ユーザーは指定された条件に基づいて複数のテーブルのデータを結合できます。結合は、論理結合と物理結合の 2 つの主なタイプに分類されます。論理結合はテーブルのデータを組み合わせる概念的な方法を表し、物理結合は RDS (リレーショナル データベース サー...
    プログラミング 2024 年 11 月 7 日に公開
  • 知っておくべきJavaScriptの機能
    知っておくべきJavaScriptの機能
    この記事では、未定義または null の可能性があるデータにアクセスしようとするときにエラーを防ぐ方法を検討し、できる方法を見ていきます。 必要に応じてデータを効果的に管理するために使用します. オプションのチェーンによる安全なアクセス JavaScript で、入れ子になったオブジ...
    プログラミング 2024 年 11 月 7 日に公開
  • JavaScript の約束: 非同期コードの理解、処理、および習得
    JavaScript の約束: 非同期コードの理解、処理、および習得
    イントロ 私は Java 開発者として働いていましたが、JavaScript の Promise に初めて触れたときのことを覚えています。コンセプトは単純そうに見えましたが、Promise がどのように機能するのかを完全に理解することはできませんでした。プロジェクトでそれらを使用し...
    プログラミング 2024 年 11 月 7 日に公開

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3