Flink akka AskTimeoutException问题排查
最近遇到一个很奇怪的问题,Flink任务正常启动正常运行一段时间后就会报错,,错误详情如下
2019-12-11 17:20:57.757 flink [flink-scheduler-1] ERROR o.apache.flink.runtime.rest.handler.job.JobsOverviewHandler - Unhandled exception.akka.pattern.AskTimeoutException: Ask timed out on [Actor[akka://flink/user/dispatcher#761962841]] after [10000 ms]. Sender[null] sent message of type "org.apache.flink.runtime.rpc.messages.LocalFencedMessage".
at akka.pattern.PromiseActorRef$$anonfun$1.apply$mcV$sp(AskSupport.scala:604)
at akka.actor.Scheduler$$anon$4.run(Scheduler.scala:126)
at scala.concurrent.Future$InternalCallbackExecutor$.unbatchedExecute(Future.scala:601)
at scala.concurrent.BatchingExecutor$class.execute(BatchingExecutor.scala:109)
at scala.concurrent.Future$InternalCallbackExecutor$.execute(Future.scala:599)
at akka.actor.LightArrayRevolverScheduler$TaskHolder.executeTask(LightArrayRevolverScheduler.scala:329)
at akka.actor.LightArrayRevolverScheduler$$anon$4.executeBucket$1(LightArrayRevolverScheduler.scala:280)
at akka.actor.LightArrayRevolverScheduler$$anon$4.nextTick(LightArrayRevolverScheduler.scala:284)
at akka.actor.LightArrayRevolverScheduler$$anon$4.run(LightArrayRevolverScheduler.scala:236)
at java.lang.Thread.run(Thread.java:745)
初步判断应该是触发了akka的超时机制,那就先调整集群的akka超时间配置,在conf/flink-conf.yaml最后增加下面参数
akka.ask.timeout: 100 s
观察Job Manager Configuration,配置参数已经生效
再将任务起起来,在运行十几个小时之后还是出现同样的错误,这就很奇怪了,明明更改了参数也生效了,为啥还是10000 ms就超时了
似乎有点邪门,只能Google一把了,在Apache Flink 中文用户邮件列表找到类似的问题,给出的建议是调整akka.ask.timeout和web.timeout两个参数
异常原因如上所说是 akka ask timeout 的问题,这个问题前两天有人在部署 k8s 的时候也遇过[1] 他的情况是配置资源过少导致 JM 未能及时响应。除了调整上述参数外也可看看是不是这个问题。 Best,
tison. [1]
https://lists.apache.org/thread.html/84db9dca2e990dd0ebc30aa35390ac75a0e9c7cbfcdbc2029986d4d7@%3Cuser-zh.flink.apache.org%3E Biao Liu <[hidden email]> 于2019年8月8日周四 下午8:00写道: > 你好,
>
> 异常里可以看出 AskTimeoutException, 可以调整两个参数 akka.ask.timeout 和 web.timeout
> 再试一下,默认值如下
>
> akka.ask.timeout: 10 s
> web.timeout: 10000
>
> PS: 搜 “AskTimeoutException Flink” 可以搜到很多相关答案
>
> Thanks,
> Biao /'bɪ.aʊ/
这我就有点奇怪了,错误和web.timeout有啥关系啊,只能顺着错误翻看Flink源码了。在源码重直接找到JobsOverviewHandler类,发现引用这个类就两个:一个是JobsOverviewHeaders,主要是作为一个link;另外一个是WebMonitorEndpoint,
在这实例化了一个JobsOverviewHandler,传入了timeout参数
protected final RestHandlerConfiguration restConfiguration;
final Time timeout = restConfiguration.getTimeout();
JobsOverviewHandler jobsOverviewHandler = new JobsOverviewHandler(leaderRetriever,timeout,responseHeaders,JobsOverviewHeaders.getInstance());
再追踪timeout来源发现取自RestHandlerConfiguration Timeout字段,而这个值来自WebOptions.TIMEOUT
public static RestHandlerConfiguration fromConfiguration(Configuration configuration) {
final long refreshInterval = configuration.getLong(WebOptions.REFRESH_INTERVAL); final int maxCheckpointStatisticCacheEntries = configuration.getInteger(WebOptions.CHECKPOINTS_HISTORY_SIZE); final Time timeout = Time.milliseconds(configuration.getLong(WebOptions.TIMEOUT)); final String rootDir = "flink-web-ui";
final File webUiDir = new File(configuration.getString(WebOptions.TMP_DIR), rootDir); return new RestHandlerConfiguration(
refreshInterval,
maxCheckpointStatisticCacheEntries,
timeout,
webUiDir);
}
/**
* Timeout for asynchronous operations by the web monitor in milliseconds.
*/
public static final ConfigOption<Long> TIMEOUT =
key("web.timeout")
.defaultValue(10L * 1000L)
.withDescription("Timeout for asynchronous operations by the web monitor in milliseconds.");
这下真相大白,果然需要调整web.timeout参数,是web监视器的异步操作超时时间,默认10000ms。将该值提高到300000ms,继续观察。
参考
https://zhuanlan.zhihu.com/p/49095640
http://apache-flink.147419.n8.nabble.com/Fwd-need-help-td321.html#a349
Flink akka AskTimeoutException问题排查的更多相关文章
- 记录一次Flink作业异常的排查过程
最近2周开始接手apache flink全链路监控数据的作业,包括指标统计,业务规则匹配等逻辑,计算结果实时写入elasticsearch. 昨天遇到生产环境有作业无法正常重启的问题,我负责对这个问题 ...
- Flink on YARN(下):常见问题与排查思路
Flink 支持 Standalone 独立部署和 YARN.Kubernetes.Mesos 等集群部署模式,其中 YARN 集群部署模式在国内的应用越来越广泛.Flink 社区将推出 Flink ...
- Flink run提交参数
折腾了好几天,终于搞定了Flink run提交参数,记录一下. 背景: 之前一直报错,akka,AskTimeoutException,尝试添加akka.ask.timeout=120000s, 依然 ...
- Flink源码分析
http://vinoyang.com/ http://wuchong.me Apache Flink源码解析之stream-source https://yq.aliyun.com/articles ...
- Flink articles
http://ictlabs-summer-school.sics.se/2015/slides/flink-advanced.pdf http://henning.kropponline.de/20 ...
- flink clickhouse-jdbc和flink-connector 写入数据到clickhouse因为jar包冲突导致的60 seconds.Please check if the requested resources are available in the YARN cluster和Could not resolve ResourceManager address akka报错血案
一.问题现象,使用flink on yarn 模式,写入数据到clickhouse,但是在yarn 集群充足的情况下一直报:Deployment took more than 60 seconds. ...
- 报错:Flink Could not resolve substitution to a value: ${akka.stream.materializer}
报错现象: Exception in thread "main" com.typesafe.config.ConfigException$UnresolvedSubstitutio ...
- Flink Checkpoint 问题排查实用指南
在 Flink 中,状态可靠性保证由 Checkpoint 支持,当作业出现 failover 的情况下,Flink 会从最近成功的 Checkpoint 恢复.在实际情况中,我们可能会遇到 Chec ...
- flink RPC(akka)
flink中的rpc框架使用的akka.在本节并不详细讲述akka,而是就flink中rpc来讲述akka的部分内容.本节,我从AkkaRpcActor.handleRpcInvocation方法讲起 ...
- 深入理解Akka Actor模型
Carl Hewitt 在1973年对Actor模型进行了如下定义:"Actor模型是一个把'Actor'作为并发计算的通用原语". Actor是异步驱动,可以并行和分布式部署及运 ...
随机推荐
- 对于AF、RI、Safety from rep exposure、spec的归纳总结
每次写实验时,在写代码之前都要进行AFRISafety from rep exposure spec的编写,过程十分繁琐,但是也非常有用.根据他们写代码,不仅可以找到切入点,而且思路更加清晰了,避免了 ...
- Java方法定义及调用。
一.什么是方法 1.Java方法是语句的集合,它们在一起执行一个功能. ①方法是解决一类问题的步骤的有序组合 ②方法包含与类或对象中 ③方法在程序中被创建,在其他地方被引用 2.设计方法的原则:方法的 ...
- js 俄罗斯方块 canvas
俄罗斯方块背景- canvans 第一次写不知道说些什么好,直接上代码了@_@... jquery引入 <script src="https://cdn.bootcdn.net/aja ...
- nestjs mongoose关联查询
nestjs,mongoose关联查询网上搜不到了,查看了nest/mongoose.d.ts文件,分享一波 user.model.ts import { Prop, Schema, SchemaFa ...
- CCF 201903-1 小中大
#include <iostream> #include <bits/stdc++.h> #include <string> using namespace std ...
- java-文件IO常用操作对比
文件IO中,常用的方法如下方代码中的readMethod1~8方法所示. 测试了2.5M读100次.100M读3次.250M读1次三种情况,耗时(单位:毫秒)如下: 2.5M读100次 2.5M读10 ...
- 性能测试-sysstat工具包(mpstat-主要查看CPU负载与iostat-看数据换入换出以及pidstat-主要看上下文切换)
1.mpstat概述 mpstat (multiprocessor state) 可以查看所有cpu的平均负载,也可以查看指定cpu的负载.所以mpstat其实就是主要查看CPU负载的一个工具.是一款 ...
- M1 安装apache tomcat
一.下载以及安装 1.Tomcat(官网:http://tomcat.apache.org/) 2.找到需要的版本:我用的9版本 二.将下载的文件放在自己一个目录下去 三.设置Apache环境路径 e ...
- Google colab防断联
(1)进入Colab的notebook界面,按快捷键F12,打开开发者模式或者右键检查进入,选择console (2)复制并运行代码 function ClickConnect(){ console. ...
- Mac 安装nvm
根据命令安装 nvm: curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash 当前窗口执行nv ...