排查过程:
1、 使用top命令观察,确定是MySQLd导致还是其他原因。
2、 如果是MySQLd导致的,show processlist,查看session情况,确定是不是有消耗资源的sql在运行。
3、 找出消耗高的sql,看看执行计划是否准确,索引是否缺失,数据量是否太大。
处理:
1、 kill掉这些线程(同时观察cpu使用率是否下降),
2、 进行相应的调整(比如说加索引、改sql、改内存参数)
3、 重新跑这些SQL,
其他情况:
也有可能是每个sql消耗资源并不多,但是突然之间,有大量的session连进来导致cpu飙升,这种情况就需要跟应用一起来分析为何连接数会激增,再做出相应的调整,比如说限制连接数等
MySQL数据库中间件了解过吗,sharding jdbc, mycat?
1、 sharding-jdbc 目前是基于jdbc驱动,无需额外的proxy,因此也无需关注proxy本身的高可用。
2、 Mycat是基于Proxy,它复写了MySQL协议,将Mycat Server伪装成一个MySQL数据库,而Sharding-JDBC是基于JDBC接口的扩展,是以jar包的形式提供轻量级服务的。
Was this helpful?
0 / 0