sparkStreaming项目问题

项目使用批处理方式处理数据,最开始项目很稳定,一秒一批,200ms基本处理完毕。
后来数据量激增一倍之后,项目时不时有阻塞的情况发生。
解决思路,1,最开始以为计算资源不够用,查看机器之后发现没有问题。
2,各个服务器之间通讯速度,用的都是阿里的服务器,把所有服务器调整到一个网段之后,情况仍然没有改善。
3,没有办法盯上redis,但是redis是和后端通用的,不能轻易做结论,在业务逻辑里打点,把每次操作redis的所用时间打出来,发现就是redis的问题。

定位,为什么redis不行了呢?最开始以为机器内存不够用,把redis迁移到32g的服务器上,仍然不行,不是内存的事,那是怎么回事呢?登录cli,查询所有耗时较长操作,然后把代码改了,还不行。
最后发现每隔一会redis服务占cpu百分之百,而且要持续两秒,原来问题在这,redis数据是放在内存当中的,但是redis有备份机制,为了防止数据丢失,有几个触发条件,一旦触发一条,就会把内存当中的数据刷到磁盘中,形成rdb文件(默认rdb备份机制,)去conf配置文件中修改触发条件之后果然不在卡了。

备份机制一定要有,结合所用服务器,数据量,数据重要性等选择最适合自己的备份机制与备份策略才是王道。