最近体验了一把 大量DB 连接导致服务不可用的 生产事故。
接口会查询一个字段,由于 业务架构设计问题,导致该接口 被频繁调用。所以 大量的 链接请求 打到 DB,导致 服务器 无法请求过多 链接,最终 服务器 不可用。
还有一种情况是,请求量 不多,但 sql 查询效率太低,同样 在短时间 内 无法相应 其他请求 导致 生产事故。
服务无法响应 的 原因 就是 当前 已经 没有 更多 的 资源 服务新的请求了。比如: 链接 过多,cpu 过高,线程数过多,内存 爆满等等。 对于 面向数据库 的应用程序,大部分 的事故 都是 跟 数据库 有关。
1:尽量 保证 sql 高效
2:尽量对流量进行控制