windows下zookeeper客戶端啟動慢問題及解決
阿新 • • 發佈:2021-01-10
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毫秒。