redis 运维实际经验纪录之一
来源:互联网 发布:网络运营培训班 编辑:程序博客网 时间:2024/05/16 18:25
http://blogread.cn/it/article/1635?f=sa
redis 改版的项目上线有两个月了,记录一下redis 相关的经验,也给大家一个参照:
我们的redis server是一主一从,使用R710的机器,8核心,24G内存; 每天约插入200万左右的数据,现在库里有3000万条纪录,占用了9G的内存;由于现在每天内存增长太快,担心很快会无法负载,因此写了脚本每天将过期数据删除;
现在运行中的问题:
1.redis运行基本稳定,从没有自己中断过服务,php脚本去set的话大概1秒钟能设置1万条小数据,并没有官方给出的数据高;但是修改配置后大重启服务时大概需要1到2分钟才能完全将硬盘中的数据加载到内存中去,在加载完之前,redis不能提供服务;
2.redis的默认配置中,每60秒如果纪录更改数达到1万条就需要dump到硬盘中去,但实际上由于超过了这个数,我们的redis几乎不停地在dump数据到硬盘上;dump数据到硬盘时,我估计为了达到一个原子的效应,避免数据丢失,redis是先把数据dump到一个临时文件,然后重命名为你在配置文件设定的数据文件名.而前面说到,加载数据要1到2分钟,dump数据应该也在1分钟左右吧;dump出来的文件差不多1到2个G;这样,服务器几乎一直保持着每分钟写一个2G的文件的这种IO的负载;磁盘基本不闲着;
3.还是在dump中,除开磁盘不闲着以外,CPU也一路飙升:redis是fork一个子进程来dump数据到硬盘,原有进程占用30%+的CPU,而dump数据的子进程单独享用用了一个CPU核心,cpu占用100%;
4. redis在dump数据的时候,是fork子进程,这样产生一个问题:redis本向占用了9G的内存,在dump数据时又fork一个进程,子进程继承了内存分配,也占用了9G的内存….redis一下子占用了18G的内存了;
发现这些问题后,我修改了redis的配置文件,设置为30分钟内只要有一次写修改就dump数据,这样系统负载大幅减轻了.
处于设想中的想法:
主redis并不dump数据,不管写多少次都不dump到硬盘,或是这个dump的时间非常长;从redis则主要承担合理地dump数据到硬盘以起备份作用;主redis启动时先从从redis中scp或是ftp download数据回来;有待后续验证;
转载网址:http://blog.csdn.net/mituan1234567/article/details/44045149
- redis 运维实际经验纪录之一
- redis 运维实际经验纪录之一
- redis 运维实际经验纪录
- 纪录知识库-redis
- Redis持久化磁盘IO方式及其带来的问题 有Redis线上运维经验的人会发现Redis在物理内存使用比较多,但还没有超过实际物理内存总容量时就会发生不稳定甚至崩溃的问题,有人认为是基于快照方式持
- 实际开发经验
- Memcached实际应用经验
- Storm实际使用经验
- Redis在新浪的大规模运维经验
- redis 经验
- redis 之一
- Redis实际应用场景
- Redis实际应用场景
- redis实际场景应用
- 纪录
- 纪录
- WPE实际经验和实例
- 第一个实际项目经验
- leetCode-Missing Number
- SDUT OJ提高实验5—贪心 思路汇总
- Windows7 64+caffe+python2.7+VS2013仅CPU模式
- 菱形继承,二义性和数据冗余
- LINUX编译驱动时报错
- redis 运维实际经验纪录之一
- netcat网猫
- JDBC学习04-C3P0连接池:下载和使用方法
- 生活小记53
- iOS11 instrument和真机测试的新玩法--无线调试模式(connect via network)
- 从零开始学习Docker(二、区分docker环境和docker虚拟机环境)
- 关联容器set map
- 进程控制编程
- JAVA中的反射机制