【问题标题】:Java web application seems to go idle quickly in TomcatJava Web 应用程序似乎在 Tomcat 中快速闲置
【发布时间】:2017-08-16 18:59:18
【问题描述】:

我是 java 和 tomcat 的新手。我正在使用spring mvc在java中开发一个网站。它被部署到运行 Tomcat 8 的 linux 服务器上。我部署时一切正常,它很好地连接到数据库。问题是该站点似乎很快就闲置了。我无法准确计时,但似乎整个站点只需要大约一分钟的不活动时间就可以闲置。然后下一个请求非常慢,加载了我所有的类。我也失去了我的会话。

这种情况很常见吗?听起来我在java中做错了什么?雄猫?两者都有?

编辑:根据 StuPointerException 的评论,我更新了我的数据库连接管理。我现在正在使用 Apache dbcp。如果这能解决问题,我会更新。我想给我的 QA 测试员更多的时间来访问我的网站。

【问题讨论】:

  • 您是否使用连接池连接到您的数据库?
  • 我不确定底层架构,但我使用 OracleDataSource 进行数据库连接,通过 JDBC 运行查询。我在运行每个查询时打开和关闭连接。值得指出的是,即使在空闲时加载登录页面(未连接到数据库)也会很慢。
  • 这可能是由于您的云提供商限制而发生的。例如,如果您在 Heroku 上免费托管一个应用程序,那么您的应用程序将在 30 分钟不活动后进入休眠状态。
  • 这托管在网络服务器上,正在内部访问。

标签: java linux spring spring-mvc tomcat


【解决方案1】:

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

尽管如此,但每次我看到这种行为都是因为数据库连接池配置错误。创建新的数据库连接可能会产生大量开销。

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

【讨论】:

  • 我绝对认为数据库连接可能是个问题。我会在那里做更多的研究。我的主要观点是这不是 Tomcat 的默认行为,对吗?就像一个网站不应该在一分钟内闲置。看起来这更像是我的代码而不是Tomcat配置中的问题。听起来对吗?
  • 我将此标记为答案。在我上面的更新中,我没有使用任何类型的连接池。我更新了我的数据库连接以使用 Apache DBCP,并且性能大大提高。该网站现在或多或少地运行“正常”。我的 QA 测试员很高兴!编辑:另外,感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-24
  • 1970-01-01
  • 1970-01-01
  • 2018-10-04
  • 2011-05-29
相关资源
最近更新 更多