创建群组,发送消息,回复消息等接口混合加压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操作频率高,
3、从上图中看出 %util% 超过30%以上,说明 磁盘 io 可能存在瓶颈。
4、进一步进行分析 哪个进程的 io 高了,执行 iotop ,发现redis 服务 写操作 超过 1M/s 以上,跟进log 和 redis 配置文件分析 发现 跟 redis 持久化策略有关 :save 60 10000
5、修改redis持久化策略, 改为 save 30 10000 ,再压,报错减少,消息tps刺尖减少。