我创建了一个spring-boot应用程序,在其中我使用camel-restlet组件将我的骆驼路线作为其他端点公开。
我的骆驼路线很简单:它们接受来自北向休息端点的请求,进行请求处理,通过camel-netty4-http组件调用另一个南向休息端点,处理响应并将其发送回北向。
现在,我正在使用JMeter进行性能分析。我观察到有10个线程时,我直接通过JMeter调用相同的南行其余端点时,我的骆驼路由性能(平均延迟220ms和吞吐量〜38)与从JMeter获得的结果相匹配(平均延迟210ms和吞吐量〜39) 。
但是当我在Jmeter中将线程数从10增加到100或更多时,结果很奇怪:
我只是通过将其余组件从骆驼-restlet更改为骆驼-servelet,进行了相同的测试,结果与我从JMeter直接通过JMeter调用Southbound rest端点时得到的结果相匹配(avg Latency 2230毫秒和吞吐量〜20)。
有人能帮助我理解与其他骆驼组件(骆驼式码头或骆驼小服务程序)相比,使用骆驼-座套组件获得更好性能的原因吗?
答案 0 :(得分:0)
默认情况下,骆驼式座便器是异步的,并且更适合您的测试。您可以将端点上的选项sync = true设置为相同条件。
<from uri="restlet:/path/?synchronous=true" />
http://camel.apache.org/restlet.html
或在骆驼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/">