redis主线程阻塞的情形

1.redis使用fork创建子进程就行rdb或aof重写操作时,fork子进程的过程会阻塞主进程,阻塞时间取决于主进程的内存大小–这里你是否觉得有疑问:fork子进程的时候主进程和子进程是采用共享内存的方式进行内存共享的啊,fork阻塞的时间长短怎么会和主进程的内存大小相关呢?
原因是因为主进程fork子进程的时候,子进程需要创建内存页表,一般是几十M左右,主进程的内存越大,内存页表页就越多,所以fork子进程就会越慢。
2.aof设置为每秒同步数据到磁盘时,此时有两个线程:一个是处理redis命令的主线程,一个是每秒执行fsync操作的同步线程,fsync同步线程如果遇到阻塞,有可能会阻塞住主线程,原因是:主线程每次处理完一轮命令的时候,会判断当前时间和上次fsync命令的执行时间的差距,如果时间差超过了2s,那么主线程会阻塞等待同步线程的fsync的执行。

你可能感兴趣的:(redis,redis)