【问题标题】:Spring Boot - Slow to start application on different connectionsSpring Boot - 在不同的连接上启动应用程序很慢
【发布时间】:2016-06-10 22:42:55
【问题描述】:

我在使用 Spring Boot 应用程序时遇到了一些奇怪的问题。

当我连接到 WIFI A(我的家庭网络)或完全断开互联网时,应用程序会在 6 秒内启动。

当我连接到 WIFI B(我的工作网络)时,应用程序需要 1.5 分钟才能启动。

这是一个简单的Hello, world!春季应用。主类如下所示:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        System.out.println("START := " + System.currentTimeMillis());
        SpringApplication.run(Application.class, args);
        System.out.println("STOP := " + System.currentTimeMillis());
    }
}

我看到 START 时间戳以大致相同的速度打印,所以它必须是 SpringApplication.run。这是一个裸类,因此没有其他弹簧配置。为什么 WIFI 连接的变化会导致这种延迟开始?我在 Mac OSX 上使用mvn spring-boot:run 运行它

【问题讨论】:

  • 闻起来像 DNS 反向查找。
  • 嗯,有什么方法可以检查是不是?到目前为止,我似乎找不到任何有类似问题的人。
  • Wireshark 在您的 WLAN 适配器上,查看启动时的流量?
  • 1.5分钟是否包括通过Maven下载所有依赖项?它总是需要这么长时间,还是只是第一次?
  • 总是。单独运行 jar 也会导致这个问题。

标签: java spring spring-boot


【解决方案1】:

我遇到了与此非常相似的问题。一个非常简单的 Spring Boot 应用程序在办公室网络上启动大约需要 45 秒,在我的家庭网络上启动不到 10 秒。

识别我的外部 IP 地址似乎有延迟,但在我的 Mac 上运行以下命令修复了它。

scutil --set HostName "localhost"

【讨论】:

    【解决方案2】:

    @chrylis 是正确的,这是一个 DNS 查找问题。通过更改我在工作互联网上的 DNS 解析设置,启动时间得到了无限改善。

    现在我想知道为什么当 DNS 解析器速度较慢时 Spring Boot 会变慢,或者可能是 MacOSX 的问题?

    【讨论】:

    • 我也有同样的问题。您是否找到任何方法来记录它实际尝试解析的 DNS 名称?我想看看是否可以在/etc/hosts中输入一个条目
    猜你喜欢
    • 2015-07-19
    • 2019-12-16
    • 2021-06-20
    • 2015-04-04
    • 1970-01-01
    • 2017-07-17
    • 2020-04-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多