flink异步io操作符调优/微基准测试

sigwle7e  于 2021-06-21  发布在  Flink
关注(0)|答案(0)|浏览(315)

作为Flink Async IO 运算符是为外部api或db调用而设计的,是否有任何特定的准则/提示来扩展此运算符?特别是对于以非常高的速度接收传入事件和使用异步io操作符的用例 orderedWait 模式不能跟上这个速度(尽管它调用的目标api端点经过负载测试,以提供更高的吞吐量和最小的延迟)。在我们的例子中 Async IO 管道运营商将吞吐量降低了88%至90%。这是巨大的性能打击!
我们试过几件事:
增加 async buffer capacity 参数,通过增加在任何给定时间点等待响应的并发请求的数量来实现。事实证明,超过50或100这样一个非常小的数字反而会适得其反。
增加运算符并行性。这并没有多大帮助,因为我们机器上的内核数量有限(8或12个)
调整 AsyncHTTPClient 配置( keepAlive=true, maxConnections, maxConnectionsPerHost )以及未来侦听器使用的fixedthreadpool的大小。又一次没有多大改善。
我们的观察结果是 Async IO 操作符一次只处理一个流元素,操作符及其底层的http客户机是多线程的,需要更高的核心机器来进行高速流处理。如果这类应用程序只能使用8到16核的机器,那么我们在满足所需的吞吐量和延迟sla方面将面临挑战。
是否有任何微基准或调整指南可供使用 Async IO 对于高速流处理,那么我们知道它的吞吐量是多少?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题