1

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

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

你之前有没有遇到过这个问题,你做了哪些 GC 优化?

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

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

4

1 回答 1

0

如果我们假设您每天工作 8 小时,那么您平均每秒获得 138 个滴答声。我很清楚极端情况很重要,但这就是我们所得到的。138 滴答声/秒根本不是问题。我们每天使用 2 GB 堆就可以毫无问题地获得 x100。很有可能,您有内存泄漏。你有 gc 日志记录吗?如果没有,请立即安装。

这些是我们使用的标志:

-Xloggc:/gc-$(date +"%0d-%0m-%y-%0k%M").gclog -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC -XX:+PrintTenuringDistribution -XX :+PrintGCApplicationStoppedTime -XX:+PrintGC原因

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

于 2016-05-23T06:53:47.250 回答