如何有效地从 Java 发布到 KDB Ticker Plant

How to publish to KDB Ticker Plant from Java effectively

我们有向 KDB Ticker Plant 发布报价的市场数据处理程序。为此,我们使用 exxeleron q java 库。不幸的是延迟非常高:当我们尝试插入一批记录时需要数百毫秒。您可以为 KDB + Java 绑定提出一些延迟提示,因为我们需要非常快地发布。

此消息中没有足够的信息来给出完全合格的响应,但是对 Java+KDB 进行了相同的处理后,它实际上归结为消除了可能性。这是常识,真的,没什么高超的技术。

  • 确保您正在异步插入
  • 确认是 exxeleron q java 导致了延迟。我不认为那里有 100 毫秒的开销。
  • 验证您的 tickerplant 所在的 CPU 没有超载。考虑重新调整、核心绑定等
  • 分析您的网络延迟。此外,如果您使用 Linux,您可以尝试一些 tcp 调整,例如TCP_QUICKACK
  • 当您使用 Java 时,请更聪明地进行垃圾回收。它是高度可配置的,虽然不能直接控制。
  • 如果您发现 tickerplant 是延迟的根源,您可以将其重新编码为不写入磁盘 - 或者获得更快的本地磁盘。

还有很多建议,但是问题有点太模糊了。

编辑 回到 2007 年,使用旧的(大概)服务器和非常旧的 KDB+ 版本,我们使用 vanilla c.java 管理每秒 90k 行的插入率。那是在经过以上几点的多轮之后。我相信你现在可以取得更多成就,关键是找到瓶颈在哪里并一一解决。

确保发布到票务工厂的数据是批量的,比如批量插入几行数据,但不要在有新记录时逐行插入