在红色日志中,经常会出现一条与背景保存相关的行,例如:
[11465] 06 Mar 08:10:11.292 * RDB: 541 MB of memory used by copy-on-write有人能澄清这句话的确切意思吗?
发布于 2017-03-06 09:00:34
当redis想要保存快照时,它会先分叉自己,然后分叉进程保存数据集,而不是因为必须服务请求而受到干扰,等等。
因为您现在有两个进程,这可能意味着要使用两倍的RAM,对吗?但是不,操作系统实际上通过让新进程引用旧进程的内存页来优化这个场景。
当原始服务器的内存在分叉之后发生变化时(由于您发出更新命令或其他原因),就会发生有趣的事情。分叉进程必须维护它在分叉时获得的任何内存状态,因此系统在更改共享页之前,会将页面复制到分叉进程(这样就不再共享),然后更改原始进程的页面。这叫做“抄写”。
在您的示例中,这大致意味着在保存快照所需的时间内,您更改了541 of的数据。
https://stackoverflow.com/questions/42621208
复制相似问题