Apache flink 从配置文件在Flink中设置缓冲区超时

Apache flink 从配置文件在Flink中设置缓冲区超时,apache-flink,flink-streaming,flink-sql,Apache Flink,Flink Streaming,Flink Sql,我如何通过Flink中的配置?我曾尝试在flink-conf.yaml中添加此配置,但没有成功。我们需要在哪里设置此配置 我尝试过用下面的代码以编程方式设置它,但不知怎么的,它并没有减少我的延迟。我只是想知道我是否可以通过一个配置文件来设置它 StreamExecutionEnvironment env = StreamExecutionEnvironment.createRemoteEnvironment(hots, port, null)); env.setBufferTimeout(2);

我如何通过Flink中的配置?我曾尝试在
flink-conf.yaml
中添加此配置,但没有成功。我们需要在哪里设置此配置

我尝试过用下面的代码以编程方式设置它,但不知怎么的,它并没有减少我的延迟。我只是想知道我是否可以通过一个配置文件来设置它

StreamExecutionEnvironment env = StreamExecutionEnvironment.createRemoteEnvironment(hots, port, null));
env.setBufferTimeout(2);
StreamTableEnvironment tableEnv = StreamTableEnvironment.create(env, streamSettings);
tableEnv.executeSql(query);
我不确定我是否遗漏了什么

更新

为了测试该属性是否正在传递给Flink,我在
Flink-conf.yaml
中尝试将
BufferTimeout
属性设置为-2,但它没有引发任何异常。我在代码中将其设置为-2时出现异常。这让我感觉到,财产并没有被转交给弗林克。此外,我的延迟数有一个明确的模式,从45毫秒到100毫秒不等。这表明Flink在交付之前发生了一些缓冲

你能给我指一下我们在Flink github repo中设置这个的文件吗?

在你的代码中设置env.setBufferTimeout(2),或者在Flink-conf.yaml中设置
execution.buffer-timeout:2
(或者在命令行上通过
-Dexecution.buffer-timeout=2
)应该可以工作

请注意,如果缓冲区没有超时,这不会产生任何明显的效果。也许你的缓冲区通常是满的?您可以根据度量(
numBytesInRemote/numBuffersInRemote
)计算平均缓冲区大小,并将其与缓冲区大小(32 KiB)进行比较,以估计缓冲区超时的频率


请注意,如果将flink作为小型集群运行,则不会读取flink-conf.yaml(换句话说,就像在IDE中一样,在一个JVM中运行客户机应用程序、作业管理器和任务管理器)。

我现在更新了答案,并提供了更多详细信息。在我的案例中,似乎有一些缓冲区从弗林克那边发生。我已经扩展了我的答案。