Redis单核CPU占用过高
来源:互联网 发布:罗浮威尔瓷砖 知乎 编辑:程序博客网 时间:2024/04/30 15:21
redis是用"单线程-多路复用io模型"来实现高性能的内存数据服务的,这种机制避免了使用锁,但是同时这种机制在进行sunion之类的比较耗时的命令时会使redis的并发下降。因为是单一线程,所以同一时刻只有一个操作在进行,所以,耗时的命令会导致并发的下降,不只是读并发,写并发也会下降。而单一线程也只能用到一个cpu核心,所以可以在同一个多核的服务器中,可以启动多个实例,组成master-master或者master-slave的形式,耗时的读命令可以完全在slave进行
出现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远程连接的ip和端口)。
需要采用脚本批量删除多个连接
1.2修改redis timeout参数
采用redis-cli登录,采用config set timeout xx 设置redis的keepalive时间
1.3修改redis进程的文件数限制
echo -n "Max open files 3000:3000" > /proc/PID/limits
1.4修改系统参数的最大文件数限制
/etc/security/limits.conf
2、对慢查询进行持久化,比如定时存放到mysql之类。(redis的慢查询只是一个list,超过list设置的最大值,会清除掉之前的数据,也就是看不到历史)
3、限制key的长度和value的大小
使用redis的注意事项:
1、Master最好不要做任何持久化工作,包括内存快照和AOF日志文件,特别是不要启用内存快照做持久化。
2、如果数据比较关键,某个Slave开启AOF备份数据,策略为每秒同步一次。
3、为了主从复制的速度和连接的稳定性,Slave和Master最好在同一个局域网内。
4、尽量避免在压力较大的主库上增加从库
5、为了Master的稳定性,主从复制不要用图状结构,用单向链表结构更稳定,即主从关系为:Master<--Slave1<--Slave2<--Slave3......., 这样的结构也方便解决单点故障问题,实现Slave对Master的替换,也即,如果Master挂了,可以立马启用Slave1做Master,其他不变
6、使用Redis负载监控工具:redis-monitor,它是一个Web可视化的 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远程连接的ip和端口)。
需要采用脚本批量删除多个连接
1.2修改redis timeout参数
采用redis-cli登录,采用config set timeout xx 设置redis的keepalive时间
1.3修改redis进程的文件数限制
echo -n "Max open files 3000:3000" > /proc/PID/limits
1.4修改系统参数的最大文件数限制
/etc/security/limits.conf
2、对慢查询进行持久化,比如定时存放到mysql之类。(redis的慢查询只是一个list,超过list设置的最大值,会清除掉之前的数据,也就是看不到历史)
3、限制key的长度和value的大小
使用redis的注意事项:
1、Master最好不要做任何持久化工作,包括内存快照和AOF日志文件,特别是不要启用内存快照做持久化。
2、如果数据比较关键,某个Slave开启AOF备份数据,策略为每秒同步一次。
3、为了主从复制的速度和连接的稳定性,Slave和Master最好在同一个局域网内。
4、尽量避免在压力较大的主库上增加从库
5、为了Master的稳定性,主从复制不要用图状结构,用单向链表结构更稳定,即主从关系为:Master<--Slave1<--Slave2<--Slave3......., 这样的结构也方便解决单点故障问题,实现Slave对Master的替换,也即,如果Master挂了,可以立马启用Slave1做Master,其他不变
6、使用Redis负载监控工具:redis-monitor,它是一个Web可视化的 redis 监控程序
0 0
- Redis单核CPU占用过高
- redis cpu占用过高排查
- mysql 占用cpu过高
- snmpd占用CPU过高
- eclipse占用过高CPU
- 多线程占用cpu过高
- cimprovagt占用CPU过高
- cpu占用过高
- Cpu占用过高的总结
- MYSQL 占用CPU过高问题
- Windbg 调试CPU占用过高
- C# WinForm CPU占用过高
- java cpu占用过高分析
- ThreadMXBean定位CPU占用过高
- sublime text3占用CPU过高
- mysql 占用过高的cpu
- kswapd0 进程CPU占用过高
- CPU占用过高解决思路一
- 【厚积薄发】编程技术总结3—递归函数使用的优缺点详解
- 前端跨域问题遇到的坑及解决方式
- eclipse调试时设置浏览器
- php-fpm报502问题
- Buffer中的flip()
- Redis单核CPU占用过高
- SpringMVC 异常处理
- CMSIS-RTOS2 应用笔记 三 功能概述
- ios数组里的model排序(高级排序)
- 网络请求
- Python文件异常try/except/finally
- 【诗】诗词锦集(持续更新)
- CodeFroces 805B 3-palindrome
- jsp页面使用cookie记住密码 jquery