Java web应用程序在Tomcat中似乎很快就闲置了

Java web应用程序在Tomcat中似乎很快就闲置了,java,linux,spring,spring-mvc,tomcat,Java,Linux,Spring,Spring Mvc,Tomcat,我不熟悉java和tomcat。我正在使用SpringMVC用java开发一个网站。它被部署到运行Tomcat8的linux服务器上。部署时一切正常,它连接到数据库非常好。问题是这个网站似乎很快就闲置了。我还不能精确地计算时间,但似乎整个站点只需要大约一分钟的不活动时间就可以闲置。然后下一个请求非常慢,在我所有的类中加载。我也失去了我的课程 这是常有的事吗?听起来我在java中做错了什么吗?雄猫?两者都有 编辑:根据StuPointerException的评论,我已经更新了我的数据库连接管理。我

我不熟悉java和tomcat。我正在使用SpringMVC用java开发一个网站。它被部署到运行Tomcat8的linux服务器上。部署时一切正常,它连接到数据库非常好。问题是这个网站似乎很快就闲置了。我还不能精确地计算时间,但似乎整个站点只需要大约一分钟的不活动时间就可以闲置。然后下一个请求非常慢,在我所有的类中加载。我也失去了我的课程

这是常有的事吗?听起来我在java中做错了什么吗?雄猫?两者都有


编辑:根据StuPointerException的评论,我已经更新了我的数据库连接管理。我现在正在使用ApacheDBCP。我将更新,如果这解决了问题。我想给我的QA测试人员足够的时间来访问我的网站。

如果没有关于服务器设置的更多信息,很难直接回答您的问题

不过,值得一提的是,每次我看到这种行为,都是因为数据库连接池配置不当。在创建新的数据库连接时可能会有很大的开销


如果不使用连接池或允许池中的连接终止(由于缺少验证查询/检查),那么随着时间的推移,您将开始看到由于连接超时而导致的性能问题。

是否使用连接池连接到数据库?我不确定基础架构,但我使用OracleDataSource进行数据库连接,通过JDBC运行查询。我在运行每个查询时打开和关闭连接。值得指出的是,即使在空闲时加载登录页面(不连接到数据库)也很慢。这可能是因为云提供商的限制。例如,如果你在Heroku上免费托管一个应用程序,那么你的应用程序将在30分钟不活动后进入睡眠状态。该应用程序托管在网络服务器上,正在进行内部访问。我肯定认为数据库连接可能有问题。我会在那里做更多的研究。我的主要观点是,这不是Tomcat的默认行为,对吗?就像一个网站不应该在一分钟内闲置。这似乎更像是我的代码中的问题,而不是Tomcat配置中的问题。听起来对吗?我把这个作为答案。在上面的更新中,我没有使用任何类型的连接池。我将数据库连接更新为使用ApacheDBCP,性能大大提高。该网站现在运行“正常”,或多或少。我的QA测试人员很高兴!编辑:还有,谢谢你的帮助。