Java QuickFIX/J的GC问题

Java QuickFIX/J的GC问题,java,garbage-collection,finance,quickfixj,Java,Garbage Collection,Finance,Quickfixj,我们正在使用QuickFIX/J创建一个低延迟Java应用程序。我们订阅了大约50种货币对,因此我们每天收到大约4000000个滴答声。这是因为我们从不同的流动性提供者那里获得它们 我看到很多GC正在发生,在峰值时间,我们的应用程序挂起并且没有响应。我尝试了64 GB堆,也尝试了G1 for GC,但没有成功。你能建议我如何解决这个问题吗 您之前是否遇到过这个问题?您做了哪些GC优化 我是否应该离开QuickFIX/J并尝试使用其他修复引擎?你能推荐一些能满足我要求的开源/商业修复引擎吗 目前我

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

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

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

我是否应该离开QuickFIX/J并尝试使用其他修复引擎?你能推荐一些能满足我要求的开源/商业修复引擎吗


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

如果我们假设您的工作日为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:+原因

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

如果我们假设您的工作日为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:+原因

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

Ok QuickixJ不是为您处理的吞吐量而设计的。最好是定制QuickfixJ或修补JVM。好吧,QuickixJ不是为处理吞吐量而设计的。您最好自定义QuickfixJ或使用JVM修补程序。感谢您的回答,我将启用GC日志并发布这是我的报告,但持续时间更短。我想发布完整的一天运行7分钟有点短:-),问题并没有显现出来。我认为需要更长的时间。另外,当运行CMS时,ParNewGC是默认值,所以您不需要它。我注意到您正在调整plab大小,您是否注意到了这带来的性能好处?今天我将发布我的GC日志,为期一天。我没有改变plab的大小。谢谢你的回答,我会启用GC日志并发布这是我的报告,但持续时间更短。我想发布完整的一天运行7分钟有点短:-),问题并没有显现出来。我认为需要更长的时间。另外,当运行CMS时,ParNewGC是默认值,所以您不需要它。我注意到您正在调整plab大小,您是否注意到了这带来的性能好处?今天我将发布我的GC日志,为期一天。我没有改变格子的尺寸。