redis是用”单线程-多路复用io模型”来实现高性能的内存数据服务的,这种机制避免了使用锁,但是同时这种机制在进行sunion之类的比较耗时的命令时会使redis的并发下降。因为是单一线程,所以同一时刻只有一个操作在进行,所以,耗时的命令会导致并发的下降,不只是读并发,写并发也会下降。而单一线程也只能用到一个cpu核心,所以可以在同一个多核的服务器中,可以启动多个实例,组成master-master或者master-slave的形式,耗时的读命令可以完全在slave进行
我这个是redis连接数过多导致
出现cpu过高的原因有:
1、连接数过多,通过redis-cli info | grep connected_clients查看
2、慢查询,因为redis是单线程,如果有慢查询的话,会阻塞住之后的操作,通过redis日志查
3、value值过大?比如value几十兆,当然这种情况比较少,其实也可以看做是慢查询的一种
4、aof重写/rdb fork发生?瞬间会堵一下Redis服务器
对应解决方案:
1、连接数过多解决:
1.1关闭僵尸连接
采用redi-cli登录,采用client kill ip:port(redis远
版权声明:本文为nuli888原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。