JFinal+Druid内存占用问题
使用Jfinal+Druid+mysql5.6,用LoadRunner进行查询的性能测试,100个vuser连续压10分钟左右,发现内存占用持续上升,Tomcat配置的2G内存很快被占完了,且查询响应时间随着内存的占用越来越长,但查询结束以后,内存不释放,仍然继续占用很高的内存,此后如果继续压的话,查询响应时间就很长(好几秒)。
请问,我是需要做什么设置么?
环境如下:
JFinal 1.9,Druid 1.0.25,Mysql5.6(max_connection=1000), Tomcat8.0+Linux服务器
连接池配置如下:
initialSize=100
maxWait=60000
maxActive=1000
filters=stat
minIdle=50
内存占用图:
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(10)
请问下是如何处理的?
回复
@听_风 : 其实比较简单,就是后来登录的用户把前面的同ID用户的Session删除就可以了
谢谢各位神回复,尤其是JFinal大神。经过我的反复试验,发现其实跟数据库没啥关系,主要是性能测试冲击下大量用户反复登录,shrio session内存不能及时清除,导致内存只增不减,经过一些处理,内存占用情况明显好转,明天再用loadRunner测试一下
最重要是要定位不被释放的资源是什么资源,例如,是不是通过查询数据库得到的 List<Model> 对象,这些对象产生的速度是不是很快? 是不是快到远远大于回收的速度? 是不是对些对象的引用一直存在而造成的内存泄漏?
贴出一下测试用的代码,对测试代码进行下简单分析
druid 监控页面 逻辑和物理连接关闭数看看是多少
感谢各位大神,我们还要继续做测试,你们这样说我就心中有底了,应该不会是架构选型有问题
mysql
max_connection=1500.我用没问题。 我的是 50,1500 。mysql 2000 .忙的时候 在线用户 4w+
maxActive配置过多了,配成20吧。initialSize 5个试试
我也是这么用的,貌似没问题
执行GC了也不能释放