创建群组,发送消息,回复消息等接口混合加压2小时后,创建群组失败,报错率超过10%,创建群组报错,服务挂掉;

前台报错:{"data":null,"error":null,"errorCode":1,"success":false}  , 后台服务被压挂;  redis 报 oom  

后台报错log:

Caused by: com.mobile.redis.RedisOperateException: [<default>] 10.247.19.42:6380

Caused by: redis.clients.jedis.exceptions.JedisDataException: OOM command not allowed when used memory > 'maxmemory'.

调优方案:

1、数据库服务器 从 8C  改为 24C  , redis master 内存 从 12G  改为 24G

2、各 接口 70 并发,继续加压 3 小时;发现消息tps有刺尖,在 刺尖时 io wait% 很高,redis write操作频率高,

性能压测之redis性能参数调优_性能压测

3、从上图中看出 %util% 超过30%以上,说明 磁盘 io 可能存在瓶颈。

4、进一步进行分析 哪个进程的 io 高了,执行 iotop  ,发现redis 服务 写操作 超过 1M/s   以上,跟进log 和  redis 配置文件分析  发现 跟 redis 持久化策略有关 :save 60 10000 

5、修改redis持久化策略, 改为 save 30 10000 ,再压,报错减少,消息tps刺尖减少。