redis的read error on connection错误解决

redis的read error on connection错误解决

转载:https://www.cnblogs.com/krainbow/p/4261906.html

昨日,公司php调用redis报错:read error on connection 2015-01-29 23:59:050.13330000,redis存放的是用户session。

    在网上查询,大家说法都比较一致,说是php.ini文件中的一个配置项导致:

    default_socket_timeout = 60

    由于redis扩展也是基于php 的socket方式实现,因此该参数值同样会起作用。

解决方法是:

    1、直接修改php.ini,将其设置为我们想要的值(这个不推荐)

    2、在我们的脚本中通过以下方式设置,这样就比较灵活,不对其他脚本产生影响

ini_set(‘default_socket_timeout’, -1);  //不超时

 

    但是,一看,修改的两个参数,一个是php的全局参数,一个是redis的超时操作,都应该按照实际情况来修改,而且,设置超长超时时间或者不超时都是不合理的;

 

    继续检查redis发现,/usr/local/redis_16379/src/redis-cli -p 16379 info(服务器配置的redis端口为16379,分配内存为8000M)

used_memory_human:7.49G,占用内存已经7.49G

db10:keys=53090286,键值5000多万

    竟然是键值占满了内存,检查php的调用代码,发现php竟然没有设置redis的键值过期时间,修改php代码,对键值设置过期时间

 redis的read error on connection错误解决

    设置完之后,发现之前的键值因为没有设置过期时间,程序不会自动删除,于是用脚本删除主redis上对应的session,

/usr/local/redis_16379/src/redis-cli -p 16379 -n 10 keys “PHPSESSION_wc*” | xargs /usr/local/redis_16379/src/redis-cli -p 16379 -n 10 del

将大部分过期数据删除掉,删除一定数量的数据之后,报错消失,redis连接正常。

 

    但是,发现redis主从,在这样删除之后,从数据竟然没有同步,主的数据和从数据差距有400多万不一致,也没有再发现bgsave操作,查看从日志Trying a partial resynchronization,发现因为过滤keys占用太多资源,造成服务器负载飙升,slave断开与主机的连接,需要从积压空间中找回断开期间的数据更新记录。但是因为删除数据太多,断开的时间足够长,master 拒绝 slave 的部分同步请求,从而 slave 只能进行全同步。

至此,在slave上对数据进行全量同步,数据恢复正常,业务正常。

 

需要注意几点:

    1.redis数据,正常情况下,设置过期时间,否则可能出现,存储键值过多,占用完了预设内存,导致新的键值无法存储,调用redis失败的;

    2.超时时间必须根据实际业务来设置;

    3.如果slave一直连接不上master,可能需要进行全量同步。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/112949.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • PLSQL详细使用教程及下载地址「建议收藏」

    PLSQL详细使用教程及下载地址「建议收藏」Oracle数据库连接必备,大公司玩转oracle数据库必备,虽然现在已经都用MYSQL替换了,但是不可否认这款软件的实力。中文版还具有语法加强、SQL和PL/SQL帮助、对象描述等功能特性。下载地址:http://kk04.cn/f-6339.html详细使用教程:http://kk04.cn/f-6342.html…

    2022年5月2日
  • 卡巴斯基爱好者见面会 卡巴斯基先生与卡fans亲密互动

    卡巴斯基爱好者见面会 卡巴斯基先生与卡fans亲密互动3月31日,国际著名的技术先锋人物、领先的反病毒厂商卡巴斯基实验室的创始人&CEO尤金•卡巴斯基由莫斯科飞抵北京。阔别中国两年之久,尤金抵京后做的第一件事就是出席与卡巴fans的见面会,与其“

    2022年7月2日
  • 显卡三重缓冲

    显卡三重缓冲显卡三重缓冲是解决显示器刷新率不足的问题的方案。

    2022年5月22日
  • 塑料高分子应用计算机,分子模拟方法与模拟软件Materials+Studio在高分子材料中的应用.pdf…

    塑料高分子应用计算机,分子模拟方法与模拟软件Materials+Studio在高分子材料中的应用.pdf…塑料庄吕清等——分了模拟方法及模拟软件MaterialsStudio在高分了材料中的应用2010年39卷第4期嵛誓。o。tjl:?、‘;’j1恭。j、t?lt.j一、o.、0分子模拟方法及模拟软件MaterialsStudio在高分子材料中的应用’庄昌清。岳红。张慧军(西北工业大学理学院应用化学系,陕西,西安710129)摘要:综述分子模拟的发…

    2022年5月25日
  • 矩阵分解模型

    矩阵分解模型矩阵分解模型做如下假设:1.每个用户可描述为n个属性或特征。比如,第一个特征可以对应某个用户对动作片的喜好程度。2.每个物品可描述为n个属性或特征。比如,接上一点,第一个特征可以用对应某部电影与动作片的接近程度。3.将用户和物品对应的属性相乘后求和,该值可能很接近用户会对该物品的评级。 1.显式矩阵分解当要处理的数据是由用户所提供的自身的偏好数据时,这些数据被称作显式偏好数…

    2022年5月15日
  • pycharm不会自动补全括号_pycharm自动提示

    pycharm不会自动补全括号_pycharm自动提示安装pycharm后,输入代码后,没有补全提示首先检查是否关闭了代码提示,如下图,将红框中“PowerSaveMode”前的勾去掉第二步,如果在输入某些代码时还是没有补全提醒,可能是配置好python环境则点击file->settings->projectInterpreter,如下图选择安装的python输入代码就会有提示了…

    2022年8月25日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号