cassandra的性能对于两个应用程序主机是不同的

x6yk4ghg  于 2021-06-10  发布在  Cassandra
关注(0)|答案(1)|浏览(394)

我的java应用程序将批量记录写入cassandra群集。我的应用程序在两个was节点上运行,并且都连接到同一群集。批量插入(异步)进程在两个was节点上同时运行。第一个was节点插入要插入的整个记录集的前50%,第二个was节点插入其余的50%。
我们观察到,这两个服务器节点中的一个要花费几乎两倍的时间来完成其插入过程。was示例都具有sane配置,并且连接了相同的群集。
请说明可能的原因。

9gm1akwq

9gm1akwq1#

一种可能是这两个was节点不完全相同,尽管您希望它们完全相同。基本的平台性能信息是诊断任何性能问题的起点。
我将通过比较两个was节点的性能监视信息来诊断这个问题,如果您在linux上,则使用nmon之类的工具。

http://nmon.sourceforge.net/pmwiki.php

像这样的命令将导致nmon数据每10秒写入一个文件,持续1800个样本

nmon -f -F <filename.nmon> -s 10 -c 1800 -t

然后使用nmon visualizer这样的工具,您可以以图形形式比较这两个节点的数据

https://nmonvisualizer.github.io/nmonvisualizer/

类似的工具也可用于其他平台,例如perfmon for windows。
在本例中,我将首先查找两个was节点之间使用的cpu的差异。如果节点的cpu较高,插入记录的时间较长,则可能该节点配置了较少的内核(vm),或者该节点中的java堆较小,因此需要花费大量时间进行垃圾收集,或者该节点配置了ssl,而另一个节点没有,等等。
如果节点的cpu不足,需要较长时间来插入记录,那么一定有一些外部瓶颈限制了节点所做的工作-可能节点上的网络端口配置错误,从而限制了该节点和cassandra群集之间的通信量,或者该节点的cassandra接口配置不正确,或者该节点的硬盘驱动器速度慢或出现故障,因此读取用于插入的批量数据速度慢,等等。
性能问题诊断需要收集性能数据,然后跟踪线索。

相关问题