内容简介:Redis在执行fsync的时候,redis为了保证AOF文件安全性,会校验上次fsync的时间是否大于2秒。若超过2秒,会发生阻塞。可以通过Redis日志进行定位:Asynchronous AOF fsync is taking too long (disk is busy?)也可以通过info persistence命令进行查看:每发生一次,aof_delayed_fsync 会增1
fork操作
-
fork操作是一个同步操作,若执行较慢会阻塞 redis 主线程
-
执行时间与内存量相关:内存越大,耗时越长;虚拟机较慢,真机较快。
-
查看fork执行时间,可做监控
-
info : latest_fork_usec 上一次执行fork的微秒数
-
-
优先使用物理机或者高效支持fork操作的虚拟化技术
-
控制Redis实际最大可用内存
-
合理配置 Linux 内存分配策略 vm.overcommit_memory = 1
-
默认这个值为0,在内存比较低的时候,会发生fork阻塞
-
-
降低fork频率:例如放宽AOF重写自动触发时机,不必要的全量复制
进程外开销
-
CPU开销
-
RDB和AOF都会生成文件,属于CPU密集型
-
优化1:不做CPU绑定,不和CPU密集型的应用部署在同一台服务器上
-
优化2:避免在单机多部署的场景大量发生AOF重写
-
-
内存
-
开销:fork内存开销,copy-on-write,子进程会共享父进程的物理内存页,当父进程执行写请求的时候会创建一个副本,此时会消耗内存。即父进程在大量写入的时候,子进程开销会比较大,创建副本。
-
优化1:防止单机多部署的时候发生大量的重写
-
优化2:echo never > /sys/kernel/mm/transparent_hugepage/enabled
-
Linux内核的2.6.38版本中增加以上配置,支持大的内存页的分配
-
内存页分配越大,会提高创建副本页的大小,影响性能
-
-
-
硬盘
-
开销:RDB与AOF文件写入的场景,可以集合iostat、iotop进行分析
-
优化1:不要和高硬盘负载服务部署在一起,例如存储服务、消息队列
-
配置:no-appendfsync-on-rewrite = yes
-
根据写入量决定磁盘类型:SSD
-
单机多实例持久化目录可以考虑分盘以及做资源限制,例如cgroup
-
AOF追加阻塞
Redis在执行fsync的时候,redis为了保证AOF文件安全性,会校验上次fsync的时间是否大于2秒。若超过2秒,会发生阻塞。
可以通过Redis日志进行定位:Asynchronous AOF fsync is taking too long (disk is busy?)
也可以通过info persistence命令进行查看:每发生一次,aof_delayed_fsync 会增1
优化方法可以参考硬盘优化策略
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- acme.sh 续期问题(路径问题)
- 缓存的一些问题和一些加密算法【缓存问题】
- 如何把设计问题转化为数学问题(方法论)
- 推荐系统中的冷启动问题和探索利用问题
- GraphQL 教程(六)—— N+1问题和缓存等问题
- Golang 并发问题(四)之单核上的并发问题
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
构建高性能Web站点
郭欣 / 电子工业出版社 / 2012-6 / 75.00元
《构建高性能Web站点(修订版)》是畅销修订版,围绕如何构建高性能Web站点,从多个方面、多个角度进行了全面的阐述,几乎涵盖了Web站点性能优化的所有内容,包括数据的网络传输、服务器并发处理能力、动态网页缓存、动态网页静态化、应用层数据缓存、分布式缓存、Web服务器缓存、反向代理缓存、脚本解释速度、页面组件分离、浏览器本地缓存、浏览器并发请求、文件的分发、数据库I/O优化、数据库访问、数据库分布式......一起来看看 《构建高性能Web站点》 这本书的介绍吧!