缓存服务器异常(CDN缓存服务器)

缓存服务器异常(CDN缓存服务器)

1.缓存雪崩

缓存中大量数据同时过期。查询数据量大。导致缓存数据库服务器压力过大。甚至宕机

解决方案:

1.1 过期时间设置随机。避免大量数据同时过期

1.2 如果是分布式部署。将热点数据分布在不同的缓存数据库中

1.3 热点数据可以设置永不过期

2.缓存穿透

缓存和数据库中都不存在的数据。用户不断的访问不存在的数据。导致数据库压力过大

解决方案:

2.1 增加鉴权。用户访问限制。一段时间内访问次数限制等

2.2 将不存在的数据也进行缓存。缓存时间可以设置短一些

2.3 布隆过滤器。将所有可能存在的数据哈希到一个大的集合中。不存在的数据会被拦截

3.缓存击穿
缓存击穿是并发用户同时访问同一数据。缓存中没有或过期。瞬时访问压力集中在查询数据库。导致数据库压力瞬时增大

解决方案:

3.1 设置热点数据永不过期

3.2 利用互斥锁。exp:

protected function getData()
{
$ret = $this->getRedis($key);
if ($ret == null) {
try {
if (lock.get) {
$ret = $this->getMysql($key);
if ($ret != null) {
$this->setRedis($key, $ret);
}
}
} catch {
lock.unlock;
}
}
return $ret;
}

缓存热点key

缓存中的一个Key。在某个时间点过期的时候。恰好在这个时间点对这个Key有大量的并发请求。缓存过期会从数据库查询数据并设置缓存。此时并发的请求可能会瞬间把数据库压垮

解决方案

对缓存查询加锁。如果KEY不存在。就加锁。然后查DB入缓存。然后解锁;其他进程如果发现有锁就等待。然后等解锁后返回数据或者进入DB查询。

更多服务器知识文章推荐:
分享到 :
相关推荐

ddos防火墙需要开启吗(ddos防火墙需要全部开启吗)

说起DDoS攻击。大部分互联网企业都是闻“D”色变。DDOS攻击被认为是网络安全领域...

DigitalOcean旧金山SFO3机房综合性能评测

DigitalOcean是一家成立于2012年云主机服务商。虽然成立时间不长。但近几...

foxmail设置(foxmail设置pop和smtp服务器填写)

各版本企业邮箱客户。可以设置到Foxmail或Outlook登陆管理企业邮箱。更为便...

百度云服务器bcc搭建服务器(百度云服务器bcc怎么用)

最近有些网友都在问小编关于百度云服务器bcc的问题,那小编就跟大家说说百度云服务器b...

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注