设为首页 收藏本站
查看: 934|回复: 0

[经验分享] 打开网站提示:MISCONF Redis is configured to save RDB-sandshell

[复制链接]

尚未签到

发表于 2018-11-2 13:00:45 | 显示全部楼层 |阅读模式
  1、问题描述:
  用浏览器打开网站 https://www.test.org 提示:MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the error.,具体报错如下:
DSC0000.jpg

  2、环境:
  centos环境:
  [root@test1 redis]# cat /etc/redhat-release

  CentOS>  [root@test1 redis]#
  redis版本:
  [root@test1 redis]# redis-server -v
  Redis server v=3.0.2 sha=00000000:0 malloc=jemalloc-3.6.0 bits=64 build=76b21ee90041b162
  [root@test1 redis]# redis-server --version
  Redis server v=3.0.2 sha=00000000:0 malloc=jemalloc-3.6.0 bits=64 build=76b21ee90041b162
  Redis属于源码安装的:
  [root@test1 ~]# cd /usr/local/redis/
  [root@test1 redis]# tree
  .
  ├── bin
  │   ├── redis-benchmark
  │   ├── redis-check-aof
  │   ├── redis-check-dump
  │   ├── redis-cli
  │   ├── redis-sentinel -> redis-server
  │   └── redis-server
  ├── conf
  │   └── redis.conf
  ├── data
  │   └── dump.rdb
  └── logs
  └── redis.log
  3、解决方法
  方法1:操作无效
  有两种修改方法,一种是通过redis命令行修改,另一种是直接修改redis.conf配置文件
  命令行修改方式示例:
  [root@test1 redis]# redis-cli
  127.0.0.1:6379> config set stop-writes-on-bgsave-error no
  修改redis.conf文件:vi打开redis-server配置的redis.conf文件,然后使用快捷匹配模式:/stop-writes-on-bgsave-error定位到stop-writes-on-bgsave-error字符串所在位置,接着把后面的yes设置为no即可。
  方法2:此方法无效,因为此机器已经设置过了。
  [root@test1 /]# cat /etc/sysctl.conf|grep vm.overcommit_memory
  vm.overcommit_memory = 1
  

    Redis "MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk"问题  

  今天在程序中,jedis put数据到redis过程中,“MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk”报错;
  再查看Redis日志,看到有这样的错误提示“Can’t save in background: fork: Cannot allocate memory”,这个提示很明显"Fork进程时内存不够用了!",但内存明明还有一个多G;
  经网上查询,Redis在保存数据到硬盘时为了避免主进程假死,需要Fork一份主进程,然后在Fork进程内完成数据保存到硬盘的操作,如果主进程使用了4GB的内存,Fork子进程的时候需要额外的4GB,此时内存就不够了,Fork失败,进而数据保存硬盘也失败了。
  解决方法:
  很简单,按提示的操作(将vm.overcommit_memory 设为1)即可:
  有三种方式修改内核参数,但要有root权限:
  (1)编辑/etc/sysctl.conf ,改vm.overcommit_memory=1,然后sysctl -p 使配置文件生效
  (2)sysctl vm.overcommit_memory=1
  (3)echo 1 > /proc/sys/vm/overcommit_memory
  方法3:重启redis服务  操作无效
  由于是通过源码安装的redis的,此时需要通过redis客户端程序redis-cli的shutdown命令来重启redis
  [root@test1 redis]# redis-cli -h 127.0.0.1 -p 6379 shutdown
  (error) NOAUTH Authentication required.
  此时只能kill命令关闭redis进程了
  [root@test1 redis]# ps -ef|grep redis
  root     36219     1  0 11:19 ?        00:00:05 ./bin/redis-server :6379           
  root     40410 39701  0 14:19 pts/7    00:00:00 grep redis
  [root@test1 redis]# kill 36129
  kill 进程号无法关闭redis进程
  [root@test1 redis]# ps -ef|grep redis
  root     36219     1  0 11:19 ?        00:00:05 ./bin/redis-server :6379
  root     40410 39701  0 14:19 pts/7    00:00:00 grep redis
  用kill -9 +进程号     强制关闭redis进程才可以强制关闭redis进程
  [root@test1 redis]# kill -9 36129
  [root@test1 redis]# ps -ef|grep redis
  root     40410 39701  0 14:19 pts/7    00:00:00 grep redis
  redis进程关闭了,然后再指定配置文件,开启redis服务
  [root@test1 redis]# /usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf
  [root@test1 redis]# ps -ef|grep redis
  root     36219     1  0 11:19 ?        00:00:05 /usr/local/redis/bin/redis-server *:6379
  root     40410 39701  0 14:19 pts/7    00:00:00 grep redis
  这时再打开网站 https://www.test.org 可以正常打开网站,但是不到1分钟网站报错依旧。
  方法4:查看redis日志
  直接用tail -30 redis.log 查看redis.log最后30行的日志
  [root@test1 logs]# cd /usr/local/redis/logs
  [root@test1 logs]# tail -30 redis.log
  2654:M 28 Apr 09:57:58.036 Background saving started by pid 33756
  33756:C 28 Apr 09:57:58.037 # Write error saving DB on disk: No space left on device
  2654:M 28 Apr 09:57:58.136 # Background saving error
  2654:M 28 Apr 09:58:04.047  10 changes in 300 seconds. Saving...
  2654:M 28 Apr 09:58:04.047 Background saving started by pid 33757
  33757:C 28 Apr 09:58:04.049 # Write error saving DB on disk: No space left on device
  2654:M 28 Apr 09:58:04.148 # Background saving error
  2654:M 28 Apr 09:58:10.056  10 changes in 300 seconds. Saving...
  2654:M 28 Apr 09:58:10.057 Background saving started by pid 33758
  33758:C 28 Apr 09:58:10.058 # Write error saving DB on disk: No space left on device
  2654:M 28 Apr 09:58:10.157 # Background saving error
  2654:M 28 Apr 09:58:16.067  10 changes in 300 seconds. Saving...
  2654:M 28 Apr 09:58:16.068 Background saving started by pid 33771
  33771:C 28 Apr 09:58:16.069 # Write error saving DB on disk: No space left on device
  2654:M 28 Apr 09:58:16.168 # Background saving error
  2654:M 28 Apr 09:58:22.078  10 changes in 300 seconds. Saving...
  2654:M 28 Apr 09:58:22.079 * Background saving started by pid 33773
  33773:C 28 Apr 09:58:22.080 # Write error saving DB on disk: No space left on device
  2654:M 28 Apr 09:58:22.179 # Background saving error
  发现此是日志:Write error saving DB on disk: No space left on device,磁盘空间不足了
  查看inode使用情况:发现inode没有使用完
  [root@test1 logs]# df -i
  文件系统              Inode  已用(I)  可用(I) 已用(I)%% 挂载点
  /dev/mapper/vg_yyd-lv_root
  512064  122336  389728   24% /
  tmpfs                 489644       4  489640    1% /dev/shm
  /dev/sda1             128016      38  127978    1% /boot
  /dev/mapper/vg_yyd-lv_home
  640848   19358  621490    4% /home
  /dev/sdb1            6553600  138928 6414672    3% /data
  [root@test1 logs]# df -hT
  文件系统    类型      容量  已用  可用 已用%% 挂载点
  /dev/mapper/vg_yyd-lv_root
  ext4    7.7G  5.5G  1.9G  75% /
  tmpfs        tmpfs    1.9G   12K  0   100% /dev/shm
  /dev/sda1     ext4    485M   40M  420M   9% /boot
  /dev/mapper/vg_yyd-lv_home
  ext4    9.7G  1.5G  7.8G  16% /home
  /dev/sdb1     ext4     99G   15G   80G  16% /data
  查看block使用率,发现/根目录磁盘已使用100%了,基本已经确认是这个原因导致的。
  [root@test1 redis]# df -hT
  文件系统    类型      容量  已用  可用 已用%% 挂载点
  /dev/mapper/vg_yyd-lv_root
  ext4    7.7G  7.7G     0 100% /
  tmpfs        tmpfs    1.9G   12K  1.9G   1% /dev/shm
  /dev/sda1     ext4    485M   40M  420M   9% /boot
  /dev/mapper/vg_yyd-lv_home
  ext4    9.7G  1.5G  7.8G  16% /home
  /dev/sdb1     ext4     99G   15G   80G  16% /data
  -bash: echo: write error: 设备上没有空间
  [root@test1 ~]# cd /var/log
  [root@test1 log]# du -sh
  2.4G    .
  查看/var/log/目录下最占空间大小的文件,由此可见 /var/log/notification.log占2.3G大小。
  [root@test1 log]# du -sh /var/log/|sort -nr   #也可以直接用命令du -sh |sort -nr
  2.3G    /var/log/notification.log
  148K    /var/log/anaconda.storage.log
  128K    /var/log/dracut.log-20160101
  128K    /var/log/cron
  124K    /var/log/anaconda.syslog
  120K    /var/log/cron-20180422
  116K    /var/log/anaconda.xlog
  80K     /var/log/secure-20180422
  80K     /var/log/dmesg.old
  76K     /var/log/dmesg
  40K     /var/log/rsyncd.log
  36K     /var/log/salt
  36K     /var/log/lastlog
  36K     /var/log/anaconda.program.log
  28K     /var/log/anaconda.log
  清空日志文件notification.log,注意此时一定不要用删除,因为日志文件很可能被服务进程占用,虽然能删除成功,但是进程没有释放此文件,还得重启对应服务释放才行,所以此时最佳方法就是清空日志,而不是删除日志。
  [root@test1 log]# >notification.log
  [root@test1 log]# df -hT
  文件系统    类型      容量  已用  可用 已用%% 挂载点
  /dev/mapper/vg_yyd-lv_root
  ext4    7.7G  5.5G  1.9G  75% /
  tmpfs        tmpfs    1.9G   12K  1.9G   1% /dev/shm
  /dev/sda1     ext4    485M   40M  420M   9% /boot
  /dev/mapper/vg_yyd-lv_home
  ext4    9.7G  1.5G  7.8G  16% /home
  /dev/sdb1     ext4     99G   15G   80G  16% /data
  日志清空后,磁盘已有空间了,此时再打开网站 https://www.test.org 就可以正常打开了。



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-629870-1-1.html 上篇帖子: linux上安装redis4.0.9 下篇帖子: redis主从+keepalived 高可用 自动切换
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表