アプリケーション用にMicroservices APIを開発しています。私はSpring Bootアプリケーションから始めました。 "Tomcatが埋め込まれたビジネスコード"と"Tomcatが埋め込まれていないビジネスコード"の2つのアーティファクトを作成しました。
パフォーマンス結果を比較すると、「組み込みでないTomcat」(つまり、スタンドアロンのTomcatで実行)は、ネイティブ実行のために優れた出力を提供することがわかります。
基本的に組み込みTomcatとスタンドアロンTomcatの実装に関する違いは何ですか?
2つの実行間でパフォーマンスはどのように変化しますか?
この問題の実際の根本的な原因を見つけました。
APR(Apache Portable Runtime)は、Tomcatスレッドの実行で重要な役割を果たします。
デフォルトでは、組み込みのTomcatがNIOを実行します。 NIOとBIOはJavaベースの実行ですが、APRはネイティブ実行です。NIOとAPRのパフォーマンスを比較すると、APRはかなり高速です。
実際、すべてのLinuxベースのTomcatバンドルは、Tomcat libフォルダーの下にAPRライブラリが同梱されています。
組み込みのTomcat(つまり、Spring Boot)でAPRを有効にした後、パフォーマンスの実行はスタンドアロンのTomcatと同じでした。