Как рассчитывается Zookeeper zk_max_latency? - PullRequest
1 голос
/ 22 марта 2019

Привет, я только что снял статистику с моего зоопарка ...

Как видите, zk_max_latency довольно высоко. Но это максимум, который он когда-либо достиг или это всегда текущее значение?

echo mntr | nc localhost 2181
zk_version  3.4.13-2d71af4dbe22557fda74f9a9b4309b15a7487f03, built on 06/29/2018 04:05 GMT
zk_avg_latency  0
zk_max_latency  4738
zk_min_latency  0
zk_packets_received 2387852
zk_packets_sent 2387928
zk_num_alive_connections    29
zk_outstanding_requests 0
zk_server_state follower
zk_znode_count  7973
zk_watch_count  74
zk_ephemerals_count 22
zk_approximate_data_size    12356979
zk_open_file_descriptor_count   62
zk_max_file_descriptor_count    16384
zk_fsync_threshold_exceed_count 2

Ответы [ 2 ]

2 голосов
/ 26 марта 2019

Метрика zk_max|avg|min_latency рассчитывается, начиная с запуска ZK-сервера.

Команда mntr обрабатывается MonitorCommand , который запрашивает метрики запроса max / avg / min из ZooKeeperServer.serverStats.requestLatency

ZKDatabase zkdb = zkServer.getZKDatabase();
ServerStats stats = zkServer.serverStats();

print("version", Version.getFullVersion());

print("avg_latency", stats.getAvgLatency());
print("max_latency", stats.getMaxLatency());
print("min_latency", stats.getMinLatency());

ServerStats.java

// getters
public long getMinLatency() {
    return requestLatency.getMin();
}

public double getAvgLatency() {
    return requestLatency.getAvg();
}

public long getMaxLatency() {
    return requestLatency.getMax();
}

И задержка запроса обновляется на ServerStats.updateLatency () . Класс реализации ядра - AvgMinMaxCounter .

public void updateLatency(Request request, long currentTime) {
    long latency = currentTime - request.createTime;
    if (latency < 0) {
        return;
    }
    requestLatency.addDataPoint(latency);
    if (request.getHdr() != null) {
        // Only quorum request should have header
        ServerMetrics.UPDATE_LATENCY.add(latency);
    } else {
        // All read request should goes here
        ServerMetrics.READ_LATENCY.add(latency);
    }
}
0 голосов
/ 24 июня 2019

zk_max_latency : Максимальное время, которое потребовалось серверу ZooKeeper для обработки запроса в миллисекундах.

Нет, это измеряется с момента последнего перезапуска сервера ZooKeeper.

...