`
sskhnje
  • 浏览: 16285 次
  • 性别: Icon_minigender_1
  • 来自: 昆明
文章分类
社区版块
存档分类
最新评论

转:MySQL 负载过高解决一例

 
阅读更多

转:http://www.linuxidc.com/Linux/2013-03/81079.htm

 

发现问题 
top命令 查看服务器负载,发现 mysql竟然经常百分之九十几的cpu,引起Mysql 负载这么高的原因,估计主要应该是索引问题和某些变态SQL语句. 

排查思路 
1. 确定高负载的类型,top命令看负载高是CPU还是IO。 
2. 检查慢查询日志,如果前端上了新代码,可能是慢查询引起负载高。 
3. 检查硬件问题,是否磁盘故障问题造成的。 
4. 检查监控平台,对比此机器不同时间的负载。 

记录慢查询 
编辑Mysql 配置文件(my.cnf),在[mysqld]字段添加以下几行: 
log_slow_queries = /usr/local/mysql/var/slow_queries.log #慢查询日志路径 
long_query_time = 5 #记录SQL查询超过5s的语句 
log-queries-not-using-indexes = 1 #记录没有使用索引的sql 

查看慢查询日志

  1. tail /usr/local/mysql/var/slow_queries.log

# Time: 130308 7:56:39 
# User@Host: user[xxxx] @ xxxx[] 
# Query_time: 0.001118 Lock_time: 0.000301 Rows_sent: 26 Rows_examined: 52 
SET timestamp=1362711399; 
SELECT FROM com WHERE iSUSEd = 1 AND category_id IN ('1') ORDER BY vieworder ASC; 
4个参数 
Query_time: 0 Lock_time: 0 Rows_sent: 1 Rows_examined: 54 
分别意思为:查询时间 锁定时间 查询结果行数 扫描行数 
主要看扫描行数多的语句,然后去数据库加上对应的索引,再优化下变态的sql 语句。 

极端情况kill sql进程 
找出占用cpu时间过长的sql,在mysql 下执行如下命令:

  1. show processlist;

确定后一条sql处于Query状态,且Time时间过长,锁定它的ID,执行如下命令:

  1. kill QUERY 269815764;

注意:杀死 sql进程,可能导致数据丢失,所以执行前要衡量数据的重要性

分享到:
评论

相关推荐

    windows下mysql主备双向复制与mycat负载均衡

    MySQL主备复制是数据库高可用性的常见解决方案。在复制过程中,一台MySQL服务器作为主服务器(Master),将数据变更记录到二进制日志(binary log)中;一台或多台作为备服务器(Slave),从主服务器获取这些日志并...

    mysql负载均衡和双击热备

    为了提高系统的稳定性和可用性,采用MySQL负载均衡和双主热备(Master-Master Replication)方案成为了一种常见的解决方案。本文将详细介绍如何通过MySQL实现负载均衡及双主热备方案,帮助读者理解其工作原理及具体...

    java处理高并发高负载类网站的优化方法.docx

    在高并发高负载类网站中,数据库的响应速度是首要解决的问题。MySQL是最常用的数据库管理系统,但是在数据量达到100万以上时,MySQL的效率会急剧下降。为了解决这个问题,我们可以使用M-S(主-从)方式进行同步复制...

    MySQL5.5 安装及界面展示软件

    MySQL5.5是一款广泛应用的关系型数据库管理系统,由Oracle公司维护。它是MySQL的早期版本,以其高效、稳定和易用性而受到开发者的喜爱。在本文中,我们将详细探讨MySQL5.5的安装过程以及如何使用界面展示软件来管理...

    mysql主从库配置

    #### 一、MySQL 安装与环境变量设置 在进行 MySQL 主从库配置之前,我们需要确保已经正确安装了 MySQL,并设置了相应的环境变量。以下是具体的步骤: 1. **下载 MySQL 免安装版**: - 访问 MySQL 官方下载页面:...

    Jmeter连接mysql数据库jar包mysql-connector-java-5.1.48-bin.zip

    这在进行性能测试时非常有用,可以验证数据库响应速度,检查数据库在高负载下的稳定性。 总之,JMeter连接MySQL数据库的过程涉及了JDBC Connection Configuration的配置、mysql-connector-java驱动的引入以及JDBC ...

    漫谈MySQL高可用架构

    - **特点**: 由MySQL官方推出的集群解决方案,能够提供接近实时的数据复制,非常适合处理大规模在线交易处理(OLTP)负载。具有极高的可用性,能够达到99.999%。 #### 四、高可用方案选择的依据 在选择适合自身业务...

    mysql-connector-java-5.1.35 MySQL的jdbc驱动jar

    在本例中,我们关注的是版本5.1.35的MySQL Connector/J。 JDBC驱动主要有四种类型,分别是Type 1、Type 2、Type 3和Type 4。MySQL Connector/J属于Type 4,即纯Java的网络驱动,它不依赖于任何本地库,可以在任何...

    解决MySQL同步延迟.pdf

    如果从机的性能较差,如使用低速硬盘(如SATA而非SSD),或者CPU负载过高,可能会影响数据同步的速度。确保从机的配置至少与主机相当,特别是在高可用性要求较高的场景,如金融行业。 【从机负载】从机上执行的额外...

    discuz 论坛运行缓慢 mysql cpu占用率 100% 一例分析

    《MySQL CPU占用率100%问题分析及解决方案——以Discuz论坛为例》 在互联网社区建设中,Discuz论坛以其强大的功能和易用性深受广大用户的喜爱。然而,随着论坛规模的扩大,数据量的增长,可能会遇到一个问题:论坛...

    超详细MySql的安装教程

    本教程以`mysql-5.5.40-win32.msi`为例。 - **第二步**:双击安装文件,开始解压缩过程,并启动安装向导。 ##### 2. 选择安装类型 - **选项**: - **Typical(默认)**:安装最常用的组件和选项。 - **Complete...

    mysql监控告警_MYSQL_告警_监控

    以下是一个简单的shell脚本示例(以`mysql.bash`为例): ```bash #!/bin/bash # 定义MySQL服务器信息 MYSQL_USER="username" MYSQL_PASS="password" MYSQL_HOST="localhost" MYSQL_PORT="3306" # 监控连接数 ...

    heartbeat +mysql master +ldirectord构建高可用的MYSQL主主复制

    以主机A为例: ```sql CHANGE MASTER TO MASTER_HOST='192.168.0.252', MASTER_USER='repl2', MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=98; ``` ### 八、Heartbeat与...

    Google高级架构师谈大规模MySQL架构

    在高可用性方面,Jeremy Cole指出,MySQL在高负载下的表现,尤其是在系统必须始终在线的行业场景下,需要关注数据库迁移、升级等变更对业务连续性的影响。通常情况下,通过50步的在线迁移,而非导致停机的2步迁移,...

    Linux应用集成MySQL数据库访问技巧

    为了更直观地理解MySQL在Linux应用中的集成过程,以下以一个简单的Tcl脚本为例,展示如何通过Tcl语言与MySQL交互: ```tcl package require mysqltcl # 连接数据库 set db [mysql::connect -host localhost -user ...

Global site tag (gtag.js) - Google Analytics