【问题标题】:Camel-restlet is giving better performance compared to camel-jetty and camel-servlet - Any specific reasons?与骆驼码头和骆驼servlet相比,骆驼restlet的性能更好-有什么具体原因吗?
【发布时间】:2019-02-15 17:21:37
【问题描述】:

我创建了一个 spring-boot 应用程序,我在其中使用 camel-restlet 组件将我的骆驼路由公开为休息端点。

我的骆驼路由很简单:他们接受来自北向休息端点的请求,进行请求处理,通过camel-netty4-http组件调用另一个南向休息端点,处理响应并将其发送回北向。

现在我正在使用 JMeter 进行性能分析。我观察到,使用 10 个线程时,我的骆驼路由性能(平均延迟 220 毫秒和吞吐量 ~38)与我通过 JMeter 直接调用同一个南行休息端点时从 JMeter 获得的结果相匹配(平均延迟 210 毫秒和吞吐量 ~39) .

但是当我在 Jmeter 中将线程数从 10 增加到 100 或更多时,结果很奇怪:

  • 当我直接调用南向休息端点时:延迟 2230 毫秒 & 吞吐量 ~20
  • 当我通过骆驼路线呼叫同一个南行休息端点时,延迟为 230 毫秒,吞吐量约为 38。

我做了同样的测试,只是将其余组件从 camel-restlet 更改为 camel-servelet、camel-jetty,结果与我在通过 JMeter 直接调用南行休息端点时从 JMeter 获得的结果相匹配(平均延迟2230 毫秒和吞吐量 ~20)。

与其他骆驼组件(camel-jetty 或camel-servlet)相比,谁能帮助我了解使用camel-restlet 组件获得更好性能的原因?

【问题讨论】:

  • 其他用户将您的问题标记为低质量和需要改进。我重新措辞/格式化您的输入,使其更易于阅读/理解。请查看我的更改以确保它们反映您的意图。如果您对我有其他问题或反馈,请随时给我留言。
  • 有趣的问题,但如果您添加一些示例代码,它可能会有所帮助(请参阅minimal reproducible example)。

标签: apache-camel restlet


【解决方案1】:

默认情况下,camel-restlet 是异步的,更适合您的测试。您可以将端点上的选项 synchronous=true 设置为相同的条件。

<from uri="restlet:/path/?synchronous=true" />

http://camel.apache.org/restlet.html

或者在camel servlet上启用异步:

<servlet> 
  <servlet-name>CamelServlet</servlet-name> 
  <display-name>Camel Http Transport Servlet</display-name> 
  <servlet-class>org.apache.camel.component.servlet.CamelHttpTransportServlet</servlet-class> 
  <init-param> <param-name>async</param-name> <param-value>true</param-value> </init-param> 
  <load-on-startup>1</load-on-startup> 
  <async-supported>true</async-supported>
</servlet>

您也可以尝试 netty4 端点(您已经将其用作客户端),它是完全反应式的并且可以处理大量并发连接。

<from uri="netty4-http:http://0.0.0.0:{{port}}/path/">

http://camel.apache.org/netty4-http.html

【讨论】:

    猜你喜欢
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-13
    • 2022-01-11
    • 1970-01-01
    • 2015-05-05
    • 1970-01-01
    相关资源
    最近更新 更多