去MySQL查询数据,数据库服务已经宕机, 这时候请求阻塞住
阻塞超时,然后抛出异常,导致无法走到第三步
下一次请求来, 又继续去连接MySQL,无限阻塞,把业务服务器也拖垮
解决方案
这是我们的解决方案...当MySQL宕机强制缓存空数据到redis,允许部分页面为空.而不是无法提供服务
解决思路
设置好合理的MySQL连接超时时间
mysqlnd.net_read_timeout = 3
当数据库连接超时之后..., 抛出异常
新建一个基础模型BaseModel, 其它所有模型继承这个模型, 并重写newEloquentBuilder方法
<?...try {
return parent::get($columns);
} catch (\Exception $e) {
// 根据 laravel..., 来确定页面为空是运营配置的问题还是数据库异常的问题