windows下zookeeper客户端启动慢问题及解决

1 问题

windows下zookeeper客户端启动特别慢,要9秒以上。

环境:

windows 8.1 64-bit

版本:

<dependency>
  <groupId>org.apache.curator</groupId>
   <artifactId>curator-framework</artifactId>
   <version>3.3.0</version>
</dependency>

测试代码:

String conStr1 = "127.0.0.1:2181";
CuratorFramework client = CuratorFrameworkFactory.newClient(conStr1,
         new RetryNTimes(10, 5000));
long beginTime = System.currentTimeMillis();
// 连接, 这一步非常慢
client.start();
System.out.println("耗时:" + (System.currentTimeMillis() - beginTime));
耗时要9秒以上。

2 分析

  使用jvisualvm.exe的cpu采样之后,发现java.net.InetAddress.getCanonialHostName()慢。它占用了97%的时间。如下图所示:

clip_image002

  为何java.net.InetAddress.getCanonialHostName()这么慢呢?

  经过一番排查之后,发现是Npcap引起的。在网络连接中可以发现2个跟Npcap相关的适配器,如下所示:

clip_image004

3 解决方案

   将本项目不会用到的网络适配器条目禁用掉,只保留会用到的。

clip_image006

注意事项:

  •  Npcap loopback适配器和KM-TEST环回适配器是我在安装Wireshark时被安装的,禁用掉这2项,会导致Wireshark环回抓包功能失败。

4 效果

  重新运行了测试代码,发现时间只要200毫秒。

原文地址:https://www.cnblogs.com/dehai/p/14258728.html