如何知道连接到 Cassandra 的 Native Client

How to know Native Clients connected to Cassandra

我能够在 OpsCenter 的特定节点上看到 160 个本机客户端。 但是应用程序的 none 指向此 DC 或来自此 DC 的任何节点。

如果是上述情况,那 160 个本机客户端是什么?

但不确定那些客户是什么。

有什么想法吗??

在最新版本中,您可以在 cqlsh 中使用 nodetool clientlistselect * from system_views.clients ; 来查看实际连接。这将为您提供主机和端口,然后您可以在系统上跟踪哪些应用程序绑定到它。

在较旧的 DSE 版本中,您还可以使用 dsetool perf userlatencytracking [enable|disable] 启用用户延迟跟踪来执行与 select * from dse_perf.user_io; 类似的操作。

我使用以下命令查找连接的客户端:

sudo lsof -i -n -P | grep 9042 | grep ESTABLISHED

通过上面的 运行,我发现了进程,这些进程都是连接到 Cassandra 的 java 应用程序。但是我没有提到这些主机中的任何一个,仍然有人向他们提出请求。

我发现所有这些请求都是因为客户端应用程序的一致性级别:QUORUM。尽管应用程序不直接引用这些 DC,但为了实现 QUORUM 请求,所有 DC 都在进行。

还有 1 件事: Java 客户端应用程序使用用户名(超级用户)'cassandra',这也需要一致性级别 QUORUM。

9042 上没有 DC 间通信,所以我对 DC 间的某些连接的假设也不正确。

以上是我的问题的解决方案。