首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

redis-1:一次关于smember和smembers的使用优化

通过prometheus等监控发现是redis调用大增,看代码在循环里对smember有大量调用。...业务JVM线程上下文和软中断同时飙升原因: smember的时间复杂度是O(1),很快,jvm大量调用smember后,相关IO也会很快得到返回数据从而进入就绪状态,那么从就绪IO读取数据的线程会始终处于繁忙状态...然后将cpu使用率最高的线程id转换为16进制,在jstack pid的结果里去查看这个线程的堆栈: 可以很清晰的看到smember的调用,这次优化上线只有这一处改动,其实这个时候已经可以确认问题了。...再用thread -n 10查找cpu耗损前10的线程堆栈,这个我没有保存现场图,看到的和之前方法一是一样的堆栈,也是smember的堆栈。...(4).总结 1.循环里不要调用redis 但是像smember这类exist一定是封装在底层的,上层一层层调用很有可能放大,这个只能是在使用的时候注意,同时观察线上的zabbix监控,主要是cpu是否有异动

5.8K41
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券