Spark 本地程序启动缓慢问题排查

今天测试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

猜你喜欢

转载自blog.csdn.net/wankunde/article/details/104645786