去MySQL查询数据,数据库服务已经宕机, 这时候请求阻塞住
阻塞超时,然后抛出异常,导致无法走到第三步
下一次请求来, 又继续去连接MySQL,无限阻塞,把业务服务器也拖垮
解决方案
这是我们的解决方案...当MySQL宕机强制缓存空数据到redis,允许部分页面为空.而不是无法提供服务
解决思路
设置好合理的MySQL连接超时时间
mysqlnd.net_read_timeout = 3
当数据库连接超时之后...php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class BaseModel extends Model
{...])) {
// 记录日志, 通知xxx
// Log::error($e);
// 强制返回空集合...}
// 如果不在处理的范围内, 继续抛出异常
throw $e;
}
}
}
之后需要重点监控日志报错, 来确定页面为空是运营配置的问题还是数据库异常的问题