redis同步效率秒_高并发下redis性能问题

我有一个类似秒杀活动,主要逻辑由redis支撑,考虑到可能的并发量,对redis进行了分片,在秒杀时候使用round robin方式从redis中进行秒杀逻辑(配合lua脚本),如果当前redis被秒杀完则会将当前redis从可用列表中排除后再次round robin到下一个redis上。整个同步请求流程有7次redis请求,redis请求命令(包括lua脚本)时间复杂度绝大部分为O(1),仅有少数O(logN)的操作。

现在情况是在并发1k时(tps 45k左右,并发500,tps37k),服务端计时日志(日志输出异步,服务端若干台,且cpu使用低于350%,24核)显示出来执行耗时会无规律偏高(频率大概在每万次上百,整理耗时会达到1s甚至更高)。

检查整个环境,redis主从(主关闭aof,rdb,仅同步,slave开启rdb,无哨兵,由其他方式进行主从切换,且调用地址通过域名方式指定,slave性能较master稍差,单机24核64G,redis整体内存开销不大,最大仅3G左右,有些甚至就记录几个数字,单机部署16实例),slowlog(由于其他原因无法知道slowlog的阈值)中无慢操作,各环节带宽开销均不大(最大250M),连接池考虑分片及服务端本身负载均衡因此单进程针对每个redis实例配置的数量均不大(100-128),testOnBorrow等均为false。redis机器上每个核cpu使用均不高(大部分为20%以下,有些由于做其他操作最大为70%)

服务端和前面说的一样,cpu使用率仅在350%以下,增加压力并不能提高cpu使用率,反而有衰减趋势(感觉某处资源受限后拖累整体),jvm日志中无full gc。

低负载情况下通过计时日志观察7步redis操作耗时总和基本控制在7ms内,甚至有些会下探到5ms(有个种子生成会进行预载,加载200个后停止,当一旦被使用后再次开始加载。且此处也使用分布式从redis递增获取种子)

检查很久都未发现瓶颈在哪,请问整个环节中有什么遗漏或者会导致性能变化的可能性

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值