• 听《Node服务线上故障》分享的思考


    文章不易,请关注公众号 毛毛虫的小小蜡笔,多多支持,谢谢。

    有任何问题都可以留言咨询。

    思考1

    写入量很大,导致redis的rdb持久化异常

    一开始排查到问题,是访问Redis返回时长较长。

    然后看到应用服务的报错信息:

    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.

    再查看redis组件的日志:

    can't save in background: fork: cannot allocate memory

    说明是bgsave出错了,无法申请到内存。

    思考

    1、bgsave vs save

    save直接调用rdbSave函数,阻塞redis主进程,直到保存完成为止。在主进程阻塞期间,服务器不能处理客户端的任何请求。

    如果数据量小,用此命令可能感觉不出有什么区别,但是当数据量很大的时候,就需要谨慎使用这个命令。

    bgsave命令执行之后立即返回OK ,然后redis fork出一个新子进程,原来的redis 进程(父进程)继续处理客户端请求,而子进程则负责将数据保存到磁盘,然后退出。

    2、rdb的缺点

    详情 请查看:毛毛虫的小小蜡笔

  • 相关阅读:
    拟阵交
    HEOI2021退役记
    退役划水一
    上下界网络流学习笔记
    扩展卢卡斯学习笔记
    扩展中国剩余定理(EXCRT)学习笔记
    插头DP学习笔记
    如何优雅地生成仙人掌图
    Powerful Number 筛学习笔记
    边分治学习笔记
  • 原文地址:https://www.cnblogs.com/simonbaker/p/16673492.html
Copyright © 2020-2023  润新知