在ELK日志系统中,用redis作为日志的缓存。但今天发现,redis数据不变,而且从redis读数据的logstash报错:
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
原因:
redis异步回写即BGSAVE命令实现数据的持久化。主进程fork后,复制自身并通过这个新的进程回写磁盘,回写结束后新进程自行关闭。
在小内存的进程上做一个fork,不需要太多资源,但当这个进程的内存空间以G为单位时,fork就成为一件很恐怖的操作。何况在16G内存的主机上fork