今天測試spark 本地任務的時候,發現程序每次啓動的時候都要等好久,才能開始正常進入啓動程序,嚴重干擾了Debug的節奏。那就開始把~~
加上Yourkit的啓動參數,其中 tracing 參數表示啓動的時候就開始進行 tracing 級別的CPU profiling,其他幾種 profiling級別可以根據需要調整。
spark.driver.extraJavaOptions -agentpath:/Applications/YourKit-Java-Profiler-2019.8.app/Contents/Resources/bin/mac/libyjpagent.dylib=exceptions=disable,delay=100,tracing
看下程序啓動的堆棧,發現卡的還是java的net包工具類,順便看了一眼源代碼,那就寫個測試類來測試一下是不是確實是這裏卡掉了。
本地測試程序:
object IpTest extends Logging {
def main(args: Array[String]): Unit = {
logInfo("begin getCanonicalHostName")
val address = InetAddress.getLocalHost
println(address.getCanonicalHostName)
logInfo("end getCanonicalHostName")
}
}
20/03/04 00:21:53 INFO IpTest: begin getCanonicalHostName
192.168.0.194
20/03/04 00:22:23 INFO IpTest: end getCanonicalHostName
測試結果符合預期。
想了一下,看到堆棧最頂層竟然是Inet6AddressImpl
的實現類的問題。
感覺肯定是DNS 解析服務出問題了。
進入路由器,關閉IPv6 無效果。
沒有辦法了,強制在路由器中指定DNS解析服務器,搞定~~
20/03/04 00:51:59 INFO IpTest: begin getCanonicalHostName
192.168.0.194
20/03/04 00:51:59 INFO IpTest: end getCanonicalHostName