【问题标题】:Spring Boot Embedded Tomcat PerformanceSpring Boot 嵌入式 Tomcat 性能
【发布时间】:2017-03-12 05:15:40
【问题描述】:

我正在为我的应用程序开发微服务 API。我从 Spring Boot 应用程序开始。我创建了两个工件 - “带有嵌入式 tomcat 的业务代码”“不带嵌入式 tomcat 的业务代码”

当我比较性能结果时,我可以看到“非嵌入式 tomcat”(即在独立 tomcat 上执行)由于本机执行而提供了良好的输出。

那么基本上嵌入式 tomcat 和独立 tomcat 在实现方面有什么区别?

两次执行之间的性能有何不同?

【问题讨论】:

  • 你是怎么做测试的?你能解释一下吗?谢谢。
  • @Rudge:我使用 Jmeter 模拟了两种场景的负载。我在我的业务代码中使用骆驼。在交易结束时,我正在打印消息历史记录,其中显示路线信息和执行时间。当我比较两个 secanrio 的执行时间时,嵌入式 tomcat 的平均延迟至少为 20 毫秒。

标签: spring tomcat spring-boot tomcat7 tomcat8


【解决方案1】:

我发现了这个问题的真正根本原因。

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-28
  • 2018-06-27
  • 1970-01-01
  • 2014-09-19
  • 2015-03-23
  • 2016-08-19
  • 2016-12-28
相关资源
最近更新 更多