当前位置: 首页 > 知识库问答 >
问题:

为什么检查点对延迟的影响如此之大?

龙永逸
2023-03-14

我观察到,在使用内存后端时,使用检查点会导致观察到的延迟意外增加。

考虑以下检查点:

2019-02-27 15:35:46,322 INFO  org.apache.flink.runtime.checkpoint.CheckpointCoordinator     - Triggering checkpoint 2 @ 1551281746322 for job a80597b3312f0704beed75397c371bf5.
2019-02-27 15:35:46,326 INFO  org.apache.flink.runtime.state.heap.HeapKeyedStateBackend     - Heap backend snapshot (In-Memory Stream Factory, synchronous part) in thread Thread[KeyedProcess -> Map -> Sink: Unnamed (1/1),5,Flink Task Threads] took 0 ms.
2019-02-27 15:35:46,342 INFO  org.apache.flink.runtime.state.DefaultOperatorStateBackend    - DefaultOperatorStateBackend snapshot (In-Memory Stream Factory, synchronous part) in thread Thread[Async calls on Source: Custom Source -> Map -> Timestamps/Watermarks (1/1),5,Flink Task Threads] took 2 ms.
2019-02-27 15:35:46,346 INFO  org.apache.flink.runtime.state.DefaultOperatorStateBackend    - DefaultOperatorStateBackend snapshot (In-Memory Stream Factory, asynchronous part) in thread Thread[pool-14-thread-2,5,Flink Task Threads] took 3 ms.
2019-02-27 15:35:46,351 INFO  org.apache.flink.runtime.state.heap.HeapKeyedStateBackend     - Heap backend snapshot (In-Memory Stream Factory, asynchronous part) in thread Thread[pool-11-thread-2,5,Flink Task Threads] took 14 ms.
2019-02-27 15:35:46,378 INFO  org.apache.flink.runtime.checkpoint.CheckpointCoordinator     - Completed checkpoint 2 for job a80597b3312f0704beed75397c371bf5 (1157653 bytes in 54 ms).

尽管端到端持续时间仅为50ms,但在15:35:46385注入的事件的响应仅在520ms后到达。在这两个时间戳之间,没有处理任何事件。在没有检查点的情况下,99.99%的延迟约为15ms。

设置:

  • 平行度=1

编辑:这是一项线性工作,所以我想检查点屏障并没有对齐。

共有1个答案

李鹏
2023-03-14

将时间花在同步确认消息到RabbitMQ上(MessageAcknowledgeingSourceBase\notifyCheckpointComplete

因为我的检查点间隔是3分钟,并且我正在注入200 ev/s,这意味着每个检查点都会触发36k条消息的确认(200*60*3),这大约需要500毫秒。

使用较小的间隔可能有助于获得更可预测的延迟,但代价是更高的中值延迟。

 类似资料:
  • 我试图将SDL程序限制为60 FPS,并使用以下代码计算FPS: 但似乎SDL_Delay以某种方式影响了SDL_GetTicks的返回值,因此time_delta得到的值类似于0到3,而当我只删除最后2行时,它通常约为15。 对我来说,这毫无意义。有人知道怎么回事吗? 编辑: 上面的代码基本上是我程序的主循环。我首先实现了一个fps计数器,通过在start_time和afterwords中计算多

  • 问题内容: 我在GAE上检查Go应用程序的性能时,我认为静态文件的响应时间非常长(183毫秒)。是吗?为什么?我该怎么办? 问题答案: 对于静态文件来说,“常规” 200毫秒似乎很重要。我从我的应用程序提供了相同的“ bootstrap- sensitive.css”的静态版本,并且可以看到两种类型的回答时间: 50-100ms(大部分时间) 150-500ms(有时) 由于我与Google Ap

  • RDB的时间:latest_fork_usec:936 上次导出rdb快照,持久化花费,微秒。 检查是否有人使用了SAVE。

  • 查看info里面的total_connections_received,如果该值不断升高,则需要修改应用,采用连接池方式进行,因为频繁关闭再创建连接redis的开销很大。

  • 下面是vb中的一个特殊情况。我搞乱了SuppressKeyPress属性,发现了一些奇怪的东西。 形势 假设我有一个名为的输入框,我希望名称不带任何数字,当插入数字时,会弹出一个MessageBox并报告错误。 在这种情况下,由于某种奇怪的原因,如果我键入一个数字,它将被写入文本框中,尽管我抑制了按键。 我发现,如果我删除MsgBox行,数字将不会出现在输入框中。 问题 这是怎么回事?为什么Msg