GC issue with QuickFIX/J



我们正在用 QuickFIX/J 创建一个低延迟的 Java 应用程序。我们订阅了大约 50 个货币对,因此我们每天获得大约 4000000 个即时报价。这是因为我们从不同的流动性提供商那里获得它们。

我看到很多 GC 发生,在高峰时间我们的应用程序挂起并且没有响应。 我尝试过使用 64 GB 堆,也尝试使用 G1 进行 GC,但没有成功。你能建议我如何解决这个问题吗?

之前是否遇到过这个问题,您做了哪些 GC 优化?

我应该从 QuickFIX/J 迁移并尝试使用其他 FIX 引擎吗?你能推荐一些可以满足我要求的开源/商业FIX引擎吗?

目前我正在使用Java 7。 迁移到Java 8会有帮助吗?

如果我们假设您有一个 8 小时的工作日,则平均每秒可获得 138 个刻度/秒。我很清楚极端才是最重要的,但这就是我们得到的全部。138 个刻度/秒应该根本不是问题。我们每天获得 x100 和 2 GB 的堆没有问题。很有可能,您有内存泄漏。你有 gc 日志记录吗?如果没有,请立即安装。

这些是我们使用的标志:

-

Xloggc:/gc-$(date +"%0d-%0m-%y-%0k%M").gclog-XX:+打印GCDetails-XX:+打印GCTime邮票-XX:+PrintHeapAtGC-XX:+印刷分配-XX:+打印GCA应用程序停止时间-XX:+打印GCCause

GC 日志记录对性能的影响非常小。如果您在获得 gc 日志后发布它,我们可以更进一步。

最新更新