Cassandra的性能与两个应用程序主机不同

问题描述 投票:0回答:1

我有我的java应用程序将批量记录写入cassandra集群。我的应用程序在两个WAS节点上运行,并且都连接到同一个集群。批量插入(异步)进程在两个节点上同时运行。第一个WAS节点插入要插入的整个记录​​集的前50%,第二个WAS节点插入其余50%。

我们观察到这两个服务器节点中的一个几乎花了两倍的时间来完成其插入过程。 WAS实例都具有合理的配置和相同的集群连接。

请建议可能的原因。

java cassandra websphere cassandra-3.0
1个回答
1
投票

一种可能性是两个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/

类似的工具可用于其他平台,例如适用于Windows的perfmon。

在这种情况下,我将首先查看两个WAS节点之间使用的CPU的差异。如果插入记录的节点中CPU占用较多,可能该节点配置的内核较少(VM),或者该节点中的Java堆可能较小,因此需要花费大量时间进行垃圾收集,或者可能该节点配置了SSL,另一个节点没有配置,等等。

如果插入记录所需的时间较长的节点中CPU不足,则必然存在一些限制节点工作的外部瓶颈 - 可能是节点上的网络端口配置错误,导致该节点与Cassandra之间的流量群集是有限的,或者该节点的Cassandra接口的配置可能不正确,或者该节点的硬盘驱动器速度较慢或失败,因此读取大量数据以进行插入很慢,等等。

性能问题诊断需要收集性能数据,然后跟踪线索。

© www.soinside.com 2019 - 2024. All rights reserved.