1. 程式人生 > 實用技巧 >windows下zookeeper客戶端啟動慢問題及解決

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%的時間。如下圖所示:

  為何java.net.InetAddress.getCanonialHostName()這麼慢呢?

  經過一番排查之後,發現是Npcap引起的。在網路連線中可以發現2個跟Npcap相關的介面卡,如下所示:

3 解決方案

  將本專案不會用到的網路介面卡條目禁用掉,只保留會用到的。

注意事項:

  • Npcap loopback介面卡和KM-TEST環回介面卡是我在安裝Wireshark時被安裝的,禁用掉這2項,會導致Wireshark環回抓包功能失敗。

4 效果

  重新運行了測試程式碼,發現時間只要200毫秒。