关于Apache camel 转发效率的测试

原创
2020/05/27 15:13
阅读数 570
关于Apache camel 转发效率的测试
并发400 循环100次 总计40000条请求
1. 接口名称
基础服务的getToken接口
2. 源接口性能
平均响应时间817ms 平均TPS 462/s 服务正常率100% 证明源服务性能没有问题
3. 集成到服务总线性能
3.1 使用Hystraix做熔断
平均响应时间3791ms 平均TPS 50/s 服务正常率82% 性能严重
3.2 去掉熔断机制 保留所有业务处理器
平均响应时间1791ms 平均TPS 208/s 服务正常率100% 性能减半
3.3 去掉所有的处理器机制(直接from-to)
平均响应时间524ms 平均TPS 629.6/s 服务正常率 99.5% 性能正常
异常原因 org.apache.http.conn.ConnectionPoolTimeoutException: Timeout waiting for connection from pool 。
推断是HTTPClient 连接池不够用。 修改camel的http组件参数
1. 最大连接数设为MaxTotalConnections :600 ,ConnectionsPerRoute 默认20 ; 没有效果
HttpComponent httpComponent = (HttpComponent) camelContext.getComponent("http4"); 
httpComponent.setMaxTotalConnections(600);

2. ConnectionsPerRoute 设置为 200 ; 异常率明显降低(0.4%)
HttpComponent httpComponent = (HttpComponent) camelContext.getComponent("http4");
httpComponent.setMaxTotalConnections(600);
httpComponent.setConnectionsPerRoute(200);

3.继续增加单个路由的连接数配置到400, 测试通过

httpComponent.setConnectionsPerRoute(400);
  • 原服务请求
  • 通过camel转发
4.结论
经过以上测试可以得出结论,
1. Hystraix 对性能问题影响较大。
2. 中间的环节处理器,对性能影响较大。 推测是IO。
因为每次处理器都要将流转换为字符串进行处理,尝试合并多余的处理器,较少处理的IO。
展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
返回顶部
顶部