听《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的缺点

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容