我有一个带有webflow的grails应用程序。我在converstaion作用域中存储我感兴趣的内部流对象。在进入和离开流几次之后,我看到连接到DB ( MySql )的单个用户在MySql服务器上生成了许多未释放的线程。mysql中的进程列表显示处于休眠模式的线程,客户端上的netstat显示已建立到mysql服务器的连接。我假设连接是保持活动的,并且没有释放。但是为什么呢?grails在进入和离开流时到底做了什么?为什么会有这么多的连接打开而没有关闭?
任何帮助都将不胜感激。
问候你,马西亚尔
发布于 2009-07-13 23:23:12
Grails使用hibernate,而hibernate又使用连接池;这些是等待流量的空闲连接。
有关Hibernate的连接池的更多信息,请访问:https://www.hibernate.org/214.html
这实际上是理想的行为;打开一个新连接可能需要大量的时间,这比发送一个打开的查询所需的时间要长得多。
“过早优化是万恶之源”--除非你看到的是与数据库相关的性能问题,否则我就不提这个问题了。
发布于 2009-07-13 23:29:55
想象一下休眠池就像一个稳定的、随时准备好的汽车池,它的引擎随时打开,让你或你的伙伴们跳进去,去你想去的任何地方……嗯,不,是去数据库。没有必要等待出租车或启动您自己的汽车之前,你启动和运行…这里一切都好
只要需要,对话就应该一直存在。你经常深入到工作流程中,在完成它们之后,你会回到你的旧的,因此仍然活跃的对话中。意思是这样的。这里也都很好
https://stackoverflow.com/questions/1118209
复制相似问题