在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
记录一次生产环境问题排查过程: 生产环境部署方式: 问题描述:
因为程序中有很多接口被调用是会访问redis, 以为是redis连接池导致,对程序中的redis连接池进行优化后重启服务,刚启动时一切正常,http 200, 但几分钟后服务再次挂掉,http 504. 检查系统资源使用情况,发现 进入redis中查看 到此问题终于是找到了。 设置redis最大占用内存 # 编辑redis配置文件,加入最大内存使用限制,我根据服务器的情况设置为3G maxmemory 3221225472 设置redis数据过期策略: redis中有6种过期策略: # 根据LRU算法生成的过期时间来删除 # volatile-lru -> remove the key with an expire set using an LRU algorithm # 根据LRU算法删除任何key。 # allkeys-lru -> remove any key accordingly to the LRU algorithm # 根据过期设置来随机删除key。 # volatile-random -> remove a random key with an expire set # 无差别随机删。 # allkeys-random -> remove a random key, any key # 根据最近过期时间来删除(辅以TTL) # volatile-ttl -> remove the key with the nearest expire time (minor TTL) # 谁也不删,直接在写操作时返回错误。 # noeviction -> don't expire at all, just return an error on write operations 在redis配置文件中设置过期策略为: 一开始是设置为 在使用
重启程序,至此服务终于正常运行。 总结:本次的问题归根结底是redis中存储入了大量脏数据,但数据处理并没有及时的清理掉这部分数据,最终导致服务停滞, 到此这篇关于redis 限制内存使用大小的实现的文章就介绍到这了,更多相关redis 限制内存内容请搜索极客世界以前的文章或继续浏览下面的相关文章希望大家以后多多支持极客世界! |
请发表评论