对于flink-1.1.5上的实时流数据平台,我遇到了一个问题。
非凡的描述: 我们flink job的业务逻辑是一个通用的ETL过程,源操作符和接收操作符都基于kafka,而变换操作符是一些相关的etl逻辑。但来自源操作员读取的kafka主题的数据大小不同,例如一个数据在非高峰时段只有不到100 KB,而其他数据在高峰时段接近600KB。在非峰值会话中,flink工作的性能很好,但是在峰值会话中表现不尽如人意,性能急剧下降并维持低状态直到峰值会话过去且性能恢复。作为结果。我没有在任务管理器上看到任何完整的GC案例,并且在此期间每个任务管理员的系统负载都减少了。此外,日志中没有异常和额外错误。我可以看到当时所有线程都通过JMX在请求缓冲区阻塞。
相关配置和指标:
1.1.5上的flink独立集群,它有1个jobmanager和5个taskmanagers(每个有18个插槽,小于CPU内核)。
jdk版本为1.8,GC类型为G1。
根据我上面所描述的内容,我们尝试了一些方法:
我们尝试过#1,#2,#3,#4方法,但它们不起作用,只是#5有效,但#5方法对我们来说不是很好,因为它的性能在下降
你以前遇到过这个问题吗?有没有更好的方法来避免这个问题?