# Redis性能问题有哪些,如何分析定位解决?
举几个例子
- 看延迟 60 秒内的最大响应延迟:
$ redis-cli -h 127.0.0.1 -p 6379 --intrinsic-latency 60
Max latency so far: 1 microseconds.
Max latency so far: 15 microseconds.
Max latency so far: 17 microseconds.
Max latency so far: 18 microseconds.
Max latency so far: 31 microseconds.
Max latency so far: 32 microseconds.
Max latency so far: 59 microseconds.
Max latency so far: 72 microseconds.
1428669267 total runs (avg latency: 0.0420 microseconds / 42.00 nanoseconds per run).
Worst run took 1429x longer than the average latency.
- 慢日志(slowlog)
慢查询,就会导致后面的请求发生排队,对于客户端来说,响应延迟也会变长。
- bigkey
大对象
- 集中过期
一般有两种方案来规避这个问题:
- 集中过期 key 增加一个随机过期时间,把集中过期的时间打散,降低 Redis 清理过期 key 的压力
- 如果你使用的 Redis 是 4.0 以上版本,可以开启 lazy-free 机制,当删除过期 key 时,把释放内存的操作放到后台线程中执行,避免阻塞主线程
- fork耗时严重
主进程创建子进程,会调用操作系统提供的 fork 函数
- 使用Swap
当内存中的数据被换到磁盘上后,Redis 再访问这些数据时,就需要从磁盘上读取,访问磁盘的速度要比访问内存慢几百倍!
- 内存碎片
Redis 4.0 版本,它正好提供了自动碎片整理的功能,可以通过配置开启碎片自动整理
THE END
暂无评论内容