【问题标题】:What does "max txn-txn-inflight limit reached" in QuestDb, and how to I avoid it?QuestDb 中的“达到最大 txn-txn-inflight 限制”是什么,我该如何避免?
【发布时间】:2021-06-01 08:47:52
【问题描述】:

在尝试从(嵌入式)QuestDb 读取数据时,我偶尔会在服务器上收到“txn-txn-inflight 限制已达到 [txn=251584, min=240384]”。

它会在一段时间(分钟)后自行纠正。这是什么意思,我可以做些什么来避免它?

【问题讨论】:

  • 这可能是由代码中的资源泄漏引起的。我会仔细检查RecordCursorFactoryRecordCursorTableReader 等资源在使用后是否已关闭。 txnmin 之间的巨大差异可能表明存在活动的 TableReader 实例。除非您期望有 10k 个同时查询 - 我会假设有泄漏。

标签: questdb


【解决方案1】:

尝试删除表目录中的_txn_scoreboard 文件。除非进程正在运行,否则此文件没有任何意义。

此文件的内容用于指示是否有活动的TableReader 持有特定数据事务的视图。当 Java 进程存在时,返回池的TableReader 实例将对其事务编号进行计时,以防止误报“读者持有事务 X”。

如果 Java 进程崩溃或没有将TableReader 返回到池中,则事务编号可能会在下次应用程序启动时显示为正在使用中。到目前为止,唯一的解决方法是删除 _txn_scoreboard 文件。

【讨论】:

  • 谢谢您,删除该文件并重新启动该过程可以解决问题。那么,这是一个已知错误吗?在我们从 5 升级到 6.0.2 之前,我们从未见过它。
  • 这是 6.0.x 中的新功能。我们将在 6.0.4 中永久修复此问题
  • @VladIlyushchenko 我使用 questdb image v6.0.4 但仍然看到此错误发生。我们使用的是 REST API,而不是 Java。
猜你喜欢
  • 1970-01-01
  • 2012-01-17
  • 2011-06-07
  • 2013-03-26
  • 1970-01-01
  • 2023-04-08
  • 1970-01-01
  • 2021-06-27
  • 2020-07-01
相关资源
最近更新 更多