缺少索引导致的服务器和MYSQL故障。
故障现象:
网站访问缓慢。
数据库RDS: CPU满,连接数满,其他值都是空闲。
apache服务器:CPU正常,IO正常,流量报警,内存爆满。
解决思路:
一、没遇到过此情况,一脸懵逼。
二、请教大神寻求思路。
根据现行表明有可能是:
1、慢查询,表锁
2、CC攻击或者蜘蛛抓取导致大量的小查询(可能没有索引)
一、查看数据库,有没有存在慢查询和锁表情况。(show full processlist),关注:查看最长时间查询的几个连接。注意:(带动作的连接,如果只连接值是null)不操作可忽略
一、1:如果存在表锁查看什么表锁住了,show OPEN TABLES where In_use > 0;。
故障原因: 二、经过查询2条SQL缺少索引,但是这2条索引查询时间都在1秒正常值内,因为查询较多引起的堵塞。(果断添加这2条缺少的索引)。
故障原因: 二、2、SELECT * FROM tp_supplier WHERE supplier_id > 0 AND fenxiao_cate_id_1 = '1376827' AND is_show = 1 AND LENGTH(brand_logo) > 0 AND is_recommend = 1 ORDER BY order_by DESC LIMIT 0, 7 (该SQL查询字段中 tp_supplier.brand_logo > 0 传入的数据类型与表字段定义不一致,会导致索引失效,建议改为 tp_supplier.brand_logo > '0' )
三、5分钟后数据库恢复正常,网站恢复正常,一脸无懵逼。
常用故障诊断工具:top 、vmstat 、iotop、ifstatus、mytop、iftop -i eth1、iostat
- 故障排查:是什么 导致了服务器端口telnet失败?
- 因为前缀索引问题导致mysql无法使用覆盖索引
- 主板故障导致服务器不定时频繁重启故障解决过程全记录
- 由于mysql隐式类型转换导致的索引失效的问题
- Mysql中字段类型不一致导致索引无效的处理办法
- MySQLl数据量不一样,导致走不同的索引
- Mysql多个LEFT JOIN使用ORDER不能使用索引导致查询过慢的解决方案
- mysql-不恰当的update语句使用主键和索引导致mysql死锁
- mysql 没有索引导致的cpu过高
- MySQL笔记:select默认使用不当索引导致的巨大性能损失
- 记一次 superblock 损坏导致服务器无法启动的故障修复
- 服务器双网卡导致的网络故障及解决方案
- MySQL中因字段字符集不同导致索引不能命中的解决方法
- windows server 2008R2 重启服务器,导致MySQL 无法连接解决办法
- MySQL · 捉虫动态 · 删被引用索引导致crash
- 服务器重启导致无法启动MySQL
- 关于mysql中由于类型转换导致索引无法使用的问题
- MySQL服务器Swap满了100%导致db很慢很卡
- semi-sync插件崩溃导致MySQL重启故障详析
- MySQL服务器SWAP使用率高导致db很慢很卡