【问题标题】:How to determine which method is taking so long when initializing a Spring application初始化 Spring 应用程序时如何确定哪个方法花费了这么长时间
【发布时间】:2019-11-13 09:59:46
【问题描述】:

我熟悉标准调试实践,但这些实践在这种情况下不起作用,因为我无法手动一步一步地跟随 Spring 应用程序。当服务被初始化时会发生许多过程,例如访问数据库、bean 初始化等。是否有一个分析工具可以捕捉一个方法需要多少时间以及导致应用程序停止的问题到底在哪里长时间做某事?如果有帮助的话,我可以使用任何 IntelliJ Idea Ultimate 工具。有什么建议吗?

【问题讨论】:

    标签: java performance debugging intellij-idea profiling


    【解决方案1】:

    我个人使用JProfiler 有一段时间来测试我编写的应用程序在渲染过程中减速的地方。它允许您查看运行方法所需的时间、调用它们的频率以及在这种情况下可能对您真正有用的大量其他信息!

    【讨论】:

      【解决方案2】:

      打开调试级别日志记录,以便您可以遵循 Spring 初始化过程,例如执行以下操作之一:

      • java 命令中添加 JVM 选项:

        -Dlogging.level.org.springframework.beans.factory.support.DefaultListableBeanFactory=DEBUG
        
      • mvn命令中添加JVM选项:

        -Dspring-boot.run.arguments=--logging.level.org.springframework.beans.factory.support.DefaultListableBeanFactory=DEBUG
        
      • 将选项添加到application.properties 文件:

        logging.level.org.springframework.beans.factory.support.DefaultListableBeanFactory = DEBUG
        
      • 将选项添加到application.yml 文件:

        logging.level.org.springframework.beans.factory.support.DefaultListableBeanFactory: DEBUG
        

      我会推荐最后两个中的一个,只要记住在完成后删除或注释掉该选项即可。

      【讨论】:

      • 谢谢,我试试那个。如果问题出在 Spring init 中,那将有所帮助。否则我将不得不遵循更通用的方法
      • @Galya 你的问题确实说“初始化Spring应用程序时”,所以问题在Spring init中。此提供的额外日志记录将记录每个正在创建的 bean 以及时间戳,因此如果日志显示在创建特定 bean 时出现延迟,那么该 bean 将是您的问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-05
      • 2022-11-30
      • 1970-01-01
      • 2010-10-07
      • 2016-08-24
      相关资源
      最近更新 更多