测量 Cassandra 服务的启动时间

Measure Startup Time of Cassandra Service

作为研究项目的一部分,我们的实验室 运行 我们想记录 Cassandra 服务的启动时间,有什么方法可以记录这些数据吗? (我可以看到我可以实现这一点的一种方法是嗅探端口是打开还是关闭,但我觉得这不是一种可靠的方法)

我找不到任何可以帮助我解决这个问题的标准分析器,请坚持有一个。

您可以做的一件事是在 system.log.

中查找特定消息

当 Cassandra 启动时,第一条消息是关于读取 cassandra.yaml 文件:

INFO  [main] 2022-01-13 08:32:06,717 YamlConfigurationLoader.java:93 - Configuration location: file:/Users/aaronploetz/local/apache-cassandra-4.0.0/conf/cassandra.yaml

启动完成后,有一条日志消息清楚地说明了这一点:

INFO  [main] 2022-01-13 08:32:11,823 CassandraDaemon.java:780 - Startup complete

根据您对“启动时间”的确切定义,您可以只查找来自 CassandraDaemon 的消息。这最初是在配置文件加载后开始的,但它是 Java 进程实际开始的开始。

在日志中输入这些信息,你也会得到时间。

如果“探查器”是指能够以编程方式执行此操作,则可以复制 the BootstrapBinaryDisabledTest class 中的代码。在 bootstrap() 方法中,您会看到它检查日志中的字符串“Starting listening for CQL clients”:

        node.logs().watchFor("Starting listening for CQL clients");

当初始化过程成功完成时,节点将仅在端口 9042(默认情况下)上接受来自 CQL 客户端(应用程序)的请求。对于 Cassandra 4.0,日志条目如下所示:

INFO  [main] <date time> PipelineConfigurator.java:125 - Starting listening for CQL clients on /x.x.x.x:9042 (unencrypted)...

对于 Cassandra 3.11,日志条目如下所示:

INFO  [main] <date time> Server.java:159 - Starting listening for CQL clients on /x.x.x.x:9042 (unencrypted)...

Cassandra 的启动时间是从守护程序启动到节点正在侦听 CQL 客户端的时间。干杯!