如何快速定位拖慢速度的 operator

classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

如何快速定位拖慢速度的 operator

Xiao Xu
平常经常遇到这个问题, 特来求助下,  平常任务基本都是共享 default slot 的, 所以在 web 上显示的是一整块,
当任务出现问题可以看到被压, 但是很难定位是里面的哪个 operator 出问题了
有没有什么方法能快速的定位出问题的 operator, 想问问大家平时怎么做的
cs
Reply | Threaded
Open this post in threaded view
|

回复:如何快速定位拖慢速度的 operator

cs
1. 在operator后面disableChaining,这样你就可以定位具体是哪个operator产生的背压
2. 打印几次tm进程的堆栈轨迹,看看哪个方法比较耗时




------------------ 原始邮件 ------------------
发件人:&nbsp;"徐骁"<[hidden email]&gt;;
发送时间:&nbsp;2020年6月24日(星期三) 下午3:11
收件人:&nbsp;"user-zh"<[hidden email]&gt;;

主题:&nbsp;如何快速定位拖慢速度的 operator



平常经常遇到这个问题, 特来求助下,&nbsp; 平常任务基本都是共享 default slot 的, 所以在 web 上显示的是一整块,
当任务出现问题可以看到被压, 但是很难定位是里面的哪个 operator 出问题了
有没有什么方法能快速的定位出问题的 operator, 想问问大家平时怎么做的
Reply | Threaded
Open this post in threaded view
|

Re: 如何快速定位拖慢速度的 operator

Xiao Xu
两个方法确实可以, 但是要追踪起来很废时间, 对小白太不友好啊
Reply | Threaded
Open this post in threaded view
|

Re: 如何快速定位拖慢速度的 operator

zhisheng
Hi 徐骁,

可以在 Flink Web UI 的 metric 那里添加每个算子的 in 和 out 的速度进行对比,然后知道到底是哪个算子处处理较慢,eg:

http://zhisheng-blog.oss-cn-hangzhou.aliyuncs.com/2020-06-25-081928.png

可以看下上面图中的测试就是一个 operator chain 在一起的作业,可以看到每个算子并行度的进出流速。

Best !
zhisheng

徐骁 <[hidden email]> 于2020年6月25日周四 上午12:51写道:

> 两个方法确实可以, 但是要追踪起来很废时间, 对小白太不友好啊
>
Reply | Threaded
Open this post in threaded view
|

回复: 如何快速定位拖慢速度的 operator

admin
In reply to this post by Xiao Xu
虽然chain在一起,但是可以通过metrics中看出来各个算子的各项指标的
| |
Sun.Zhu
|
|
[hidden email]
|
签名由网易邮箱大师定制


在2020年06月25日 00:51,徐骁<[hidden email]> 写道:
两个方法确实可以, 但是要追踪起来很废时间, 对小白太不友好啊
Reply | Threaded
Open this post in threaded view
|

Re: 如何快速定位拖慢速度的 operator

Xiao Xu
好的 感谢两位我试试

Sun.Zhu <[hidden email]> 于2020年6月25日周四 下午11:19写道:

> 虽然chain在一起,但是可以通过metrics中看出来各个算子的各项指标的
> | |
> Sun.Zhu
> |
> |
> [hidden email]
> |
> 签名由网易邮箱大师定制
>
>
> 在2020年06月25日 00:51,徐骁<[hidden email]> 写道:
> 两个方法确实可以, 但是要追踪起来很废时间, 对小白太不友好啊
>
Reply | Threaded
Open this post in threaded view
|

回复: 如何快速定位拖慢速度的 operator

aven.wu
如果算子都在一个group里面的话确实在webui上不好看出背压问题,可以将operator chain 拆开。

• StreamExecutionEnvironment.disableOperatorChaining():关闭整个Job的OperatorChain
• someStream.filter(...).map(...).startNewChain().map():startNewChain()是指从当前Operator[map]开始一个新的chain,即:两个map会chaining在一起而filter不会(因为startNewChain的存在使得第一次map与filter断开了chain)。
• someStream.map(...).disableChaining():disableChaining()是指当前Operator[map]禁用OperatorChain,即:Operator[map]会独自占用一个Task。
• someStream.map(...).slotSharingGroup("name"):默认情况下所有Operator的slotGroup都为default,可以通过slotSharingGroup()进行自定义,Flink会将拥有相同slotGroup名称的Operators运行在相同Slot内,不同slotGroup名称的Operators运行在其他Slot内。
希望对你有帮助

Best
Aven

发件人: 徐骁
发送时间: 2020年6月28日 10:16
主题: Re: 如何快速定位拖慢速度的 operator

好的 感谢两位我试试

Sun.Zhu <[hidden email]> 于2020年6月25日周四 下午11:19写道:

> 虽然chain在一起,但是可以通过metrics中看出来各个算子的各项指标的
> | |
> Sun.Zhu
> |
> |
> [hidden email]
> |
> 签名由网易邮箱大师定制
>
>
> 在2020年06月25日 00:51,徐骁<[hidden email]> 写道:
> 两个方法确实可以, 但是要追踪起来很废时间, 对小白太不友好啊
>