2020-01-11 19:04

这次是真的解决了。。。
我这里是对ehcache.xml的配置理解不够,
我之前的配置:

timeToIdleSeconds="600"
timeToLiveSeconds="1800"
这个意思:10分钟无访问,则过期,但是怎么都不会存活30分钟。

timeToIdleSeconds:设置对象在失效前的允许闲置时间(单位:秒)。仅当eternal=false对象不是永久有效时使用,可选属性,默认值是0,也就是可闲置时间无穷大。
timeToLiveSeconds:设置对象在失效前允许存活时间(单位:秒)。最大时间介于创建时间和失效时间之间。仅当eternal=false对象不是永久有效时使用,默认是0.,也就是对象存活时间无穷大。


假设 timeToIdleSeconds=x, timeToLiveSeconds=y
x=60, y=0, 60s之内必须有访问一次,如果没有则失效
x=0, y=60, 无论期间是否访问, 60s之后都会失效
x=30, y=60 每隔30s必须访问一次,如果没有访问则失效, 但总存活时间不超过60s

所以要设置session 30分钟不过期:
timeToIdleSeconds="1800"
timeToLiveSeconds="0"
表示: session 30分钟无访问则过期, 否则永不过期

2019-10-26 11:56

我也是存数据库的,不过我没调用百度翻译!我的主要目的是有什么客户觉得不合理的文字描述,他自己的修改!省的每次因为文字描述错误或者不精准还得重新发布一次。

我不同的地方是:当一个新的语言请求进来时,如果没有,就在数据库copy一份新语言,然后客户自己去翻译。

还有个不同就是:当key只不存在的时候,会将不存在的key插入到数据库,这样的话,就不用在数据单独插入了。

2019-10-25 21:31

这个总数据量不大,一共就十几条数据。

2019-10-25 21:09

还真实粗心的问题,那句delete应该放在for循环外面,不好意思,麻烦大佬了。我觉得这个帖子应该删了,别误导别人了。

2019-10-25 21:05

结果一样的,sql正常执行了,数据没有保存进去,看来不是事务的问题,是写法有问题了。我的像个办法换种写法

2019-10-25 20:57

打开了的,都执行了的。但是没有数据。

2019-10-25 20:00

好的,谢谢大佬,这块儿按你的思路想想办法。

2019-10-25 19:50

代码里面控制吗?我看了几遍关键代码位置,发现没有太好的办法,都是正常调用!系统本身不复杂,只是使用的人多!

2019-10-25 18:53

谢谢大佬!这个是用户量激增,而且用户都是大把的导入excel,导致mode对象突然增多导致的!增加了内存解决了,将来的话,可能需要考虑分布式了

2019-10-19 09:59

是 java.util.LinkedHashMap$Entry占用内存最多。 占了50%

2019-08-20 16:13

问题已解决, 与项目无关,ehcache.xml里面的chche的name=shiro-activeSessionCache的设置没生效,需要手动指定。

#参考: http://shiro.apache.org/session-management.html#SessionManagement-EHCacheSessionCacheConfiguration
#这里其实不用配置,默认就是这个策略
sessionDAO = org.apache.shiro.session.mgt.eis.EnterpriseCacheSessionDAO
securityManager.sessionManager.sessionDAO = $sessionDAO
sessionDAO.activeSessionsCacheName =shiro-activeSessionCache

2019-06-17 19:33

web.xml里面设置session timeout 是可选的吧,不是必须的设置吧!

2019-05-07 16:13

我主要是现在不知道怎么定位这种问题,因为没办法debug