From ab7f6c1b52bd764f4296fcb9220f602cfbab6439 Mon Sep 17 00:00:00 2001 From: Yunze Xu Date: Tue, 28 Sep 2021 22:14:08 +0800 Subject: [PATCH] Disable stats recorder for built-in PulsarClient (#12217) ### Motivation In `PulsarService`, there's a built-in client used in many places, like topic compaction, system topics read/write. It could also be used in protocol handlers. Different with the manually created Pulsar client, it can read the configured authentication params and TLS related configs for broker-to-broker communication. However, it doesn't change the default `statsIntervalSeconds` config, which means each time a producer/consumer/reader is created, a stats recorder (`ProducerStatsRecorderImpl` or `ConsumerStatsRecorderImpl`) will be created, in which there's a Netty `TimerTask` that prints stats periodically (the default interval is 1 minute). If there're many producers/consumers/readers created by this built-in client, the unnecessary CPU usage will be high. ### Modifications Configure the `statsIntervalSeconds` with zero value to disable stats recorder. (cherry picked from commit 52232e6e78e2ebf7a2d04489fd116c7f3abe7901) --- .../src/main/java/org/apache/pulsar/broker/PulsarService.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/PulsarService.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/PulsarService.java index 9665c21a17184..56ee332f54904 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/PulsarService.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/PulsarService.java @@ -1290,6 +1290,8 @@ public synchronized PulsarClient getClient() throws PulsarServerException { this.getConfiguration().getBrokerClientAuthenticationPlugin(), this.getConfiguration().getBrokerClientAuthenticationParameters())); } + + conf.setStatsIntervalSeconds(0); this.client = new PulsarClientImpl(conf, ioEventLoopGroup); } catch (Exception e) { throw new PulsarServerException(e);