Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 卡在弹簧性能问题上_Java_Performance_Spring_Hibernate_Tomcat_Continuous Integration - Fatal编程技术网

Java 卡在弹簧性能问题上

Java 卡在弹簧性能问题上,java,performance,spring,hibernate,tomcat,continuous-integration,Java,Performance,Spring,Hibernate,Tomcat,Continuous Integration,我有点被一个问题困住了。我有一个Spring+Hibernate应用程序,在过去的几天里,它的表现非常奇怪 通常,即使在调试模式下,它也会引导大约15秒 几天后,在没有显示任何重大错误或问题的情况下,它开始运行两次,如果不是三次那么慢的话 我认为问题可能出在Tomcat上,但即使在我运行我编写的一系列单元测试时,它们的速度还是惊人地慢(对于初始上下文引导,我们在测试+20秒时谈论的是8秒以上)。我使用一个本地的PostgreSQL数据库进行测试,这通常不是很糟糕(测试大约一秒钟) 我被卡住了。我

我有点被一个问题困住了。我有一个Spring+Hibernate应用程序,在过去的几天里,它的表现非常奇怪

通常,即使在调试模式下,它也会引导大约15秒

几天后,在没有显示任何重大错误或问题的情况下,它开始运行两次,如果不是三次那么慢的话

我认为问题可能出在Tomcat上,但即使在我运行我编写的一系列单元测试时,它们的速度还是惊人地慢(对于初始上下文引导,我们在测试+20秒时谈论的是8秒以上)。我使用一个本地的PostgreSQL数据库进行测试,这通常不是很糟糕(测试大约一秒钟)

我被卡住了。我知道我做的最后一件事是在@Controller类上添加对@Transactional的支持。这可能是原因吗?我对此表示怀疑,因为当我将事务性修改部署到稳定服务器并重新启动它时,它的运行速度与以前一样快


我完全被卡住了

你知道,根据你的描述,我们只能猜测。显然,如果您正在使用,后续构建的构建时间将揭示哪些代码更改可能是原因。如果识别代码,诊断就会简单得多

很有可能它不是由代码更改引起的,而是由环境更改引起的。例如:

  • Spring在引导过程中获取一些外部资源(XML模式、DTD等)
  • 存在一些额外的网络开销(路由器/交换机重新配置、防火墙)
  • 数据库是碎片化的,或者速度较慢。试着抽真空
调查:

  • 在引导过程中捕获少量堆栈跟踪。不需要全面的评测,我打赌只有一个阻塞/等待操作会减慢速度
  • 启用您可以使用的每个日志记录语句每个。调查应用程序的哪些部分运行缓慢

    • 您知道,根据您的描述,我们只能猜测。显然,如果您正在使用,后续构建的构建时间将揭示哪些代码更改可能是原因。如果识别代码,诊断就会简单得多

      很有可能它不是由代码更改引起的,而是由环境更改引起的。例如:

      • Spring在引导过程中获取一些外部资源(XML模式、DTD等)
      • 存在一些额外的网络开销(路由器/交换机重新配置、防火墙)
      • 数据库是碎片化的,或者速度较慢。试着抽真空
      调查:

      • 在引导过程中捕获少量堆栈跟踪。不需要全面的评测,我打赌只有一个阻塞/等待操作会减慢速度
      • 启用您可以使用的每个日志记录语句每个。调查应用程序的哪些部分运行缓慢

      我猜您的DB是造成这种情况的根本原因

      可能由于数据大小增长、模式更改等原因,某些查询的时间比以前长

      以下是一些提示:

      • 试着检查启动日志,看看什么东西看起来慢一些
      • 你能试着启动一个旧版本的应用程序,看看它是否更快
      • 你能看到现在哪些测试比较慢吗

      我猜您的DB是造成这种情况的根本原因

      可能由于数据大小增长、模式更改等原因,某些查询的时间比以前长

      以下是一些提示:

      • 试着检查启动日志,看看什么东西看起来慢一些
      • 你能试着启动一个旧版本的应用程序,看看它是否更快
      • 你能看到现在哪些测试比较慢吗

      也许评测将帮助您获得更多信息。JDK附带了一个很好的工具,名为jvisualvm(您可以在JDK安装的bin文件夹中找到它)。这几乎是自我解释。您可以连接到应用程序并开始采样。

      也许评测将帮助您获得更多信息。JDK附带了一个很好的工具,名为jvisualvm(您可以在JDK安装的bin文件夹中找到它)。这几乎是自我解释。您可以连接到应用程序并开始采样