缓存服务器异常(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查询。

分享到 :
相关推荐

香港服务器为什么经常自动重启(香港服务器为什么经常自动重启呢)

香港服务器经常自动重启的原因:1。香港服务器硬件出现问题。比如电源故障。服务器超负荷...

怎么租用合适的日本服务器(怎么租用合适的日本服务器啊)

租用合适的日本服务器方法有:1。根据自身需求选择合适的日本服务器线路;2。根据自身需...

国外云存储服务器有哪些用途(国外云存储服务器有哪些用途呢)

国外云存储服务器的用途有:1。用于数据迁移。国外云存储服务器能消除技术更新周期导致的...

美国服务器的性能测试有哪几方面(美国服务器的性能测试有哪几方面的)

美国服务器的性能测试有:1。稳定性测试。稳定性测试是模拟用户使用数的情况。同时在测试...

发表评论

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