2015-07-01 92 views
1

我们正在与64GB的RAM,8GB堆大小,32核CPU,爪哇1.7的系统上使用卡桑德拉2.0.14。 加载JNA时(按照生产设置中的建议),对性能有负面影响,尤其是与HDD一起使用时>>它会显着增加IO等待时间。 它看起来像JNA工作正常,只有当与SSD磁盘结合使用。否则,最好不要使用JNA。卡桑德拉与JNA慢(高IO)

我的问题是:

有没有人有类似的经验吗? Java如何超越本地文件系统操作(通过JNA访问)?

我们可以使用Cassandra的不JNA生产使用情况?有没有什么副作用?

结果(由性能排序):

一个)HDD + JNA 最差的性能。高IO等待。

b)HDD,没有JNA 良好的性能。低IO等待,但卡桑德拉CPU使用率是相当高的(500%)

C)SSD + JNA 似乎提供最佳的性能。低IO等待。低卡桑德拉CPU使用率(300%)。但我们不能总是使用SSD。这是一个测试,它不是我的解决方案。

谢谢。

回答

1

Afaik,Cassandra使用JNA通过mlockall将JVM锁定到内存中,以避免JVM被换出。我猜如果操作系统决定将JVM换成磁盘,性能将会非常糟糕......

我知道在早期版本的Cassandra中,JNA也被用来创建硬链接,但是因为它在Java中原生支持> = 7,我认为最近版本的Cassandra使用Java API来创建硬链接而不是JNA。

+0

谢谢你的回答。 我不确定是否是这种情况。在我的情况下,当它与HDD一起使用时,JNA使事情变得更糟**。那真是出乎意料。 – Roman