问题一:内存大页对 Redis 的性能有何影响?
内存大页对 Redis 的性能有何影响?
参考回答:
当 Redis 在执行后台 RDB 并采用 fork 子进程的方式处理时,如果操作系统开启了内存大页,Redis 在写请求导致内存数据拷贝时可能会以 2MB 为单位申请内存,这会增加申请内存的耗时,进而导致每个写请求的延迟增加,影响 Redis 性能。
关于本问题的更多回答可点击原文查看:
https://developer.aliyun.com/ask/639460
问题二:Redis 的 AOF 数据持久化是如何工作的?
Redis 的 AOF 数据持久化是如何工作的?
参考回答:
Redis 的 AOF 数据持久化工作原理是:执行写命令后,先把命令写入到 AOF 文件内存中(write 系统调用),然后根据配置的 AOF 刷盘策略,把 AOF 内存数据刷到磁盘上(fsync 系统调用)。
关于本问题的更多回答可点击原文查看:
https://developer.aliyun.com/ask/639461
问题三:Redis 提供了哪几种 AOF 刷盘机制?
Redis 提供了哪几种 AOF 刷盘机制?
参考回答:
Redis 提供了三种 AOF 刷盘机制:appendfsync always(每次写操作后立即刷盘)、appendfsync no(仅写内存,刷盘时机由操作系统决定)、appendfsync everysec(主线程写内存后返回,后台线程每隔 1 秒执行一次刷盘操作)。
关于本问题的更多回答可点击原文查看:
https://developer.aliyun.com/ask/639462
问题四:为什么配置为 appendfsync everysec 的 AOF 也可能导致 Redis 延迟变大?
为什么配置为 appendfsync everysec 的 AOF 也可能导致 Redis 延迟变大?
参考回答:
配置为 appendfsync everysec 的 AOF 并不能完全避免 Redis 主线程的阻塞。当后台线程执行 fsync 刷盘操作因磁盘 IO 负载过高而被阻塞时,主线程在尝试执行新的 fsync 操作时也会阻塞,从而导致 Redis 性能变慢。
关于本问题的更多回答可点击原文查看:
https://developer.aliyun.com/ask/639463
问题五:什么情况下会导致磁盘 IO 负载过大?
什么情况下会导致磁盘 IO 负载过大?
参考回答:
导致磁盘 IO 负载过大的情况包括:子进程正在执行 AOF rewrite(这会占用大量磁盘 IO 资源),以及有其他应用程序在执行大量的写文件操作。
关于本问题的更多回答可点击原文查看: