可以用公司里的一些已有的数据,导入进去几百万,一千万进去做各种压力测試,性能redis-benchmark,并发QPS,高可用的演练每台机器最大能存储多少数据量,横向扩容支撑更多数据
-
RDB
和AOF
的时候,其实会有生成RDB快照AOF rewrite
,耗费磁盘IO的过程主进程fork子进程 - fork的时候,子进程是需要拷贝父进程的空间内存页表的也是会耗费一定的时间的
- 一般来说,如果父进程内存有1個G的数据那么fork可能会耗费在20ms左右,如果是10G~30G那么就会耗费20 * 10,甚至20 * 30也就是几百毫秒的时间
- redis单机QPS一般在几万,fork可能一下子就会拖慢几万条操作的请求时长从几毫秒变成1秒
fork耗时跟redis主进程的内存有关系,一般控制redis的内存在10GB以内如果太大,slave -> master
全量复制太大,也会出现问题的
- redis將数据写入AOF缓冲区,单独开一个线程做fsync操作,每秒一次
- 但是redis主线程会检查两次fsync的时间如果距离上次fsync时间超过了2秒,那么写请求就会阻塞
- 一旦fsync超过2秒的延时整个redis就被拖慢
优化硬盘写入速度,建议采用SSD
不要用普通的机械硬盘,SSD大幅度提升磁盘读写的速度
- 主从复制可能會超时严重,这个时候需要良好的监控和报警机制
- 如果延迟过多那么就进行报警
- 如果一下子让多个slave从master去执行全量复制,一份大的rdb同时发送到多个slave会导致网络带宽被严重占用
- 如果一个master真的要挂载多个slave,那尽量用树状结构不要用星型结构
-
0
: 检查有没有足够内存,没有的话申請内存失败 -
1
: 允许使用内存直到用完为止
如果是0的话可能导致类似fork等操作执行失败,申请不到足够的内存空间
- 保证redis不会被杀掉
百度一下鈈同的操作系统,版本设置的方式都不太一样