web-dev-qa-db-ja.com

Spring Boot組み込みTomcatパフォーマンス

アプリケーション用にMicroservices APIを開発しています。私はSpring Bootアプリケーションから始めました。 "Tomcatが埋め込まれたビジネスコード""Tomcatが埋め込まれていないビジネスコード"の2つのアーティファクトを作成しました。

パフォーマンス結果を比較すると、「組み込みでないTomcat」(つまり、スタンドアロンのTomcatで実行)は、ネイティブ実行のために優れた出力を提供することがわかります。

基本的に組み込みTomcatとスタンドアロンTomcatの実装に関する違いは何ですか?

2つの実行間でパフォーマンスはどのように変化しますか?

10
Peter Jerald

この問題の実際の根本的な原因を見つけました。

APR(Apache Portable Runtime)は、Tomcatスレッドの実行で重要な役割を果たします。

デフォルトでは、組み込みのTomcatがNIOを実行します。 NIOとBIOはJavaベースの実行ですが、APRはネイティブ実行です。NIOとAPRのパフォーマンスを比較すると、APRはかなり高速です。

実際、すべてのLinuxベースのTomcatバンドルは、Tomcat libフォルダーの下にAPRライブラリが同梱されています。

組み込みのTomcat(つまり、Spring Boot)でAPRを有効にした後、パフォーマンスの実行はスタンドアロンのTomcatと同じでした。

http://Tomcat.Apache.org/Tomcat-7.0-doc/apr.html

11
Peter Jerald