一次维护线上redis

早上突然发现线上java服务不能用了,嗯。。。。一通检查,最后是redis的配置不合理导致的,如下

默认情况下,如果启用了 RDB 快照(至少一个保存点)并且最新的后台保存失败,Redis 将停止接受写入。检查日志,

Redis is configured to save RDB snapshots, but is currently not able to persist on disk. but is currently not able to persist on disk.

描述如下:这将使用户意识到(以一种艰难的方式)数据没有正确地保存在磁盘上,否则很可能没有人会注意到并且会发生一些灾难。 如果后台保存过程将再次开始工作,Redis 将自动允许再次写入。 但是,如果您设置了对 Redis 服务器和持久性的适当监控,您可能希望禁用此功能,以便 Redis 继续照常工作,即使存在磁盘、权限等问题。

所以说简单将该选项设置为no很可能依然没有从本质上解决问题, 只是说就算发生错误我也依然备份。 其实在持久化出错时停止工作也是一种保护机制和提示。

暂时stop-writes-on-bgsave-error设置为no可恢复服务,再进行检查

先说两个概念:

tcp-keepalive :单位:秒,默认是300;客户端与服务器端如果没有任何数据交互,多少秒会进行一次ping,pong 交互。作用:①用于校验是否有机器已经挂了②保持网络活跃(通讯), timeout:单位秒,默认0;如果在一个 timeout 时间内,没有数据的交互,是否断开连接。0代表永不断开。 timeout置为600(原为0),tcp-keepalive应该小于timeout,置为300,此时已解决问题