zoukankan      html  css  js  c++  java
  • redis惊群

    本文链接:http://www.cnblogs.com/zhenghongxin/p/8681168.html

    什么是惊群

    首先,我们使用缓存的主要目的就是为了高并发情况下的高可用,换句话说,在使用了缓存的高并发的系统下,如果缓存突然都消失了,会发生什么?首先数据库的压力必然骤增,接着负载迅速升高,响应时间变慢,进程/线程由于响应时间变慢导致集压并剧增,这就是惊群。惊群的后果就是系统不可用甚至宕机。当然这是一个非常极端的例子,但是能很好的解释惊群现象。真实环境中,可能会有个一些页面是访问非常频繁的,如果这些页面的缓存在同一时间或相近的时间突然过期了,在高并发的情况下也会产生惊群现象。

    如何避免惊群

    首先,避免缓存在同一时间过期;其次,如果缓存过期,不要让所有并发的进程/线程都去触发更新同一缓存数据。Nginx中使用mutex互斥锁解决这个问题,具体措施有使用全局互斥锁,每个子进程在epoll_wait()之前先去申请锁,申请到则继续处理,获取不到则等待,并设置了一个负载均衡的算法(当某一个子进程的任务量达到总设置量的7/8时,则不会再尝试去申请锁)来均衡各个进程的任务量。而redis我们也可以利用锁的机制,来避免惊群!

     

  • 相关阅读:
    洛谷 P3389 【模板】高斯消元法
    洛谷 P2090 数字对
    树链剖分
    bzoj3784 树上的路径
    K Seq HihoCoder
    一些奇怪的注意事项
    洛谷 P3437 [POI2006]TET-Tetris 3D
    洛谷 P2048 [NOI2010]超级钢琴 || Fantasy
    JVM字节码指令
    java中什么是Bridge Method(桥接方法)
  • 原文地址:https://www.cnblogs.com/zhenghongxin/p/8681168.html
Copyright © 2011-2022 走看看