Cassandra 性能相对于两个应用程序主机不同

Cassandra performance is different with respect to two application host

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

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

请指出可能的原因。

一种可能是两个 WAS 节点不相同,尽管您希望它们完全相同。基本平台性能信息是诊断任何性能问题的起点。

我会通过比较两个 WAS 节点的性能监控信息来诊断此问题,如果您使用的是 Linux.

,则使用 NMON 等工具
http://nmon.sourceforge.net/pmwiki.php

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

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

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

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

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

的性能监视器

在这种情况下,我最初会寻找两个 WAS 节点之间使用的 CPU 的差异。如果 CPU 在需要较长时间插入记录的节点中较高,可能该节点配置的内核 (VM) 较少,或者该节点中的 java 堆较小,因此花费很多进行垃圾收集的时间,或者该节点可能配置了 SSL 而另一个节点没有,etc.etc。

如果 CPU 在节点中较低,需要更长的时间来插入记录,那么一定有一些外部瓶颈限制了节点所做的工作 - 可能是节点上的网络端口配置错误因此该节点和 Cassandra 集群之间的流量是有限的,或者该节点的 Cassandra 接口配置不正确,或者该节点的硬盘驱动器速度慢或出现故障,因此读取插入的批量数据很慢,etc.etc.

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