我有点卡在一个问题上了。我有一个 Spring + Hibernate 应用程序,最近几天表现得很奇怪。
通常,即使在 Debug模式下,它也会引导大约 15 秒。
几天后,在没有显示任何重大错误或问题的情况下,它开始运行两倍,如果不是三倍慢的话。
我认为问题可能出在 Tomcat 中,但即使我运行了我编写的一系列单元测试,它们的运行速度也出奇地慢(我们说测试需要 8 秒以上 + 初始上下文引导需要 20 秒) .我使用本地 PostgreSQL 数据库进行测试,通常情况下还不错(测试大约一秒钟)
我卡住了。我知道我做的最后一件事是在我的@Controller 类上添加对@Transactional 的支持。这可能是原因吗?我怀疑,因为当我将事务修改部署到稳定服务器并重新启动它时,它运行得和以前一样快。
我完全卡住了
最佳答案
您知道,根据您的描述,我们只能猜测。显然,如果您使用的是 continuous-integration ,后续构建的构建时间将揭示哪些代码更改可能是原因。如果您识别代码,诊断会简单得多。
很可能它不是真正由代码更改引起的,而是由环境变化引起的。例如:
- Spring 在 Bootstrap 上获取一些外部资源(XML 模式、DTD 等)
- 有一些额外的网络开销(路由器/交换机重新配置、防火墙)
- 数据库支离 splinter 或运行缓慢。尝试吸尘
调查:
- 在 Bootstrap 期间捕获少量堆栈跟踪。不需要全面的分析,我敢打赌只有一个阻塞/等待操作会减慢速度
- 尽可能启用每个日志记录语句。 每个。调查您的应用程序的哪些部分运行缓慢。
关于java - 陷入 Spring 性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9964408/