我们正在使用QuickFIX / J创建一个低延迟的Java应用程序。我们订阅了大约50种货币对,因此我们每天可以获得大约400万个价格。这是因为我们从不同的流动性提供者那里获得它们。
我看到很多GC正在发生,在高峰时间我们的应用程序挂起而没有响应。我已尝试使用64 GB堆,并尝试使用G1 for GC但没有成功。你能否建议我如何解决这个问题?
您之前是否遇到过这个问题,您做过GC优化了什么?
我应该从QuickFIX / J移动并尝试使用其他一些FIX引擎吗?能否请一下能满足我要求的开源/商用FIX引擎?
目前我使用的是Java 7.转向Java 8会有所帮助吗?
答案 0 :(得分:0)
如果我们假设你有一个8小时的工作日,你平均得到138个蜱/秒。我很清楚这是极端情况,但这就是我们所得到的。 138滴/秒应该不是问题。我们每天使用2 GB堆获得x100而没有问题。 有可能,你有内存泄漏。你有gc日志记录吗? 如果不这样做,请立即安装。
这些是我们使用的标志:
-Xloggc:/ gc - $(日期+“%0d-%0m-%y-%0k%M”)。gclog -XX:+ PrintGCDetails -XX:+ PrintGCTimeStamps -XX:+ PrintHeapAtGC -XX:+ PrintTenuringDistribution -XX:+ PrintGCApplicationStoppedTime -XX:+ PrintGCCause
GC日志记录对性能影响非常小。 如果您在获得gc日志后发布它,我们可以进一步了解它。