mysql数据库cpu飙升800%,如何故障定位及优化?

作者&投稿:虫孔 (若有异议请与网页底部的电邮联系)
~

mysql数据库cpu飙升800%,基本上就两种原因:

访问量大,大到你8核cpu都承受不了;

慢查询,数据库执行sql语句操作(查询数据、修改数据)会产生大量的逻辑读,将读出来的数据维护到临时表中(内存),系统需要消耗较多的cpu来维持内存与磁盘数据的一致性。

大多数情况下都是开发人员对sql的把握质量不够,导致慢sql查询的产生,进而影响数据库的整体运行状况。

大量行锁冲突、行锁等待或后台任务也有可能会导致实例的CPU使用率过高,但这些情况出现的概率非常低。

当我们的数据库性能下降的厉害或者cpu飙升时候,可以进行如下操作定位问题:

查询mysql进程列表

showfullprocesslist;

获取到mysql当前使用的进程:

如果进程很多,说明请求量很大,需要区分是否正常业务流量,还是代码问题导致的。

查询慢查询日志

showvariableslike'%slow_query_log%';

找到慢查询日志文件/home/mysql/data3085/mysql/

slow_query.log

,即可找到慢查询日志信息,解决这些慢sql,你的cpu一定会降下来。

避免数据库cpu飙升

实际开发过程中,我们对数据库的使用一定要小心,不能等问题发生了再去排查问题解决问题,而是要预防问题的发生,并且在问题可能发生的情况下,提前介入,避免问题扩大化。平时开发过程中需要做好一些准备工作:

增加CPU使用率告警机制,比如使用率超过80%就短信告警;

所有的sql语句必须走索引,有DBA则由DBA统一调控,没有的话开发人员先执行explain看sql执行计划,必须走索引,属于强制规则;

新功能上线必须进行压测;

日常mysql运行监控,慢查日志查看,将隐患扼杀在摇篮之中。

以上就是一些mysql稳定运行的个人看法,大家还有什么好的建议,欢迎评论去交流讨论,批评指正~


mysql数据库linux怎样更改server characterset的编码
即用命令:cp \/usr\/share\/doc\/mysql-server-5.1.52\/my-large.cnf \/etc\/my.cnf 2. 打开my.cnf修改编码 在[client]下增加default-character-set=utf8 在[mysqld]下增加default-character-set=utf8 同时加上init_connect='SET NAMES utf8'(设定连接mysql数据库时使用utf8编码,以让mysql数据库...

关于MYSQL数据库不能导入的问题,请教大神。
3.2 创建空数据库 3.3 解压 在临时目录中解压,如:cd \/tmp tar zxf mydb.tar.gz 3.4 拷贝 将解压后的数据库文件拷贝到相关目录 cd mydb\/ cp * \/var\/lib\/mysql\/mydb\/ 对于FreeBSD:cp * \/var\/db\/mysql\/mydb\/ 3.5 权限设置 将拷贝过去的文件的属主改为mysql:mysql,权限改为660 c...

如何导入MySQL数据库?
1、打开电脑,在电脑桌面的开始界面中找到mysql,如图所示。2、双击打开mysql软件,并输入密码,如图所示。3、如果sql文件的内容中有创建数据库的语句,或者想将表存放在已有的数据库,在这里就不用创建数据库。4、输入“show databases;”就能看到自己创建的数据库,如图所示。5、输入“use 数据库名”,...

如何在linux下安装mysql数据库并配置
在linux下安装mysql数据库并配置的流程比较繁琐,需要耐心调试,具体方法和步骤如下:1.查找以前是否安装有mysql,使用下面命令:rpm -qa|grep -i mysql 如果显示有如下包则说明已安装mysql mysql-4.1.12-3.RHEL4.1 mysqlclient10-3.23.58-4.RHEL4.1 2.如果已安装,则需要删除已安装的数据库,...

mysql数据库同步问题
数据库同步操作指南说完了文件同步,我们再来探讨一下数据库同步!这里我主要教大家两种最常用的数据库的同步方法!MySQLMySQL数据同步主要有三种方式:1.利用MySQL自身的数据库同步功能2.利用MySQL数据库的特性(数据库存在固顶目录,并且以文件形式存储),进行数据库目录同步以达到数据同步目的3.利用专用的MySQL数据库同步软件...

如何在linux下安装mysql
复制解压后的mysql目录到系统的本地软件目录:执行命令:cp mysql-5.6.17-linux-glibc2.5-i686 \/usr\/local\/mysql -r 注意:目录结尾不要加\/ 添加系统mysql组和mysql用户:执行命令:groupadd mysql和useradd -r -g mysql mysql 安装数据库:进入安装mysql软件目录:执行命令 cd \/usr\/local\/mysql ...

mysql备份方案有哪些?有什么缺点?
2、xtrabackup,第三方percona公司出的全备+增量备份工具,根据你业务特征,如果需要恢复级别很高。例如只允许丢失半小时数据,那么就凌晨全备,之后都在前一个备份的基础上进行增量备份。对于innodb引擎表不会锁表,且增量备份时间短且占用系统资源不高,且可以实现相对实时的备份,所以还是很实用的mysql备份...

linux下怎么连接mysql数据库
1、 首先确保linux下mysql安装好,服务启动完之后,就可以开始连接数据库了。在终端输入“mysql -hlocalhost -uroot -p”,其中h参数是主机名,这里是本地就写localhost,也可以省略:2、输入mysql的密码之后就登录了,也可以不输入密码登录,比如这里的root密码是mysql123456,可以直接输入“mysql -h...

linux怎么安装mysql数据库
1. 安装MySQL数据库 先从MySQL官网下载MySQL,然后进入所下载的安装文件所在目录,运行如下命令进行安装,其中MySQL-server-community-5.1.56-1.rhel5.i386.rpm为刚刚下载的MySQL数据库服务器的rpm包,然后使用\/etc\/rc.d\/init.d\/mysqlrestart命令重启MySQL服务:[root@localhost ~]# rpm -ivh MySQL-...

浅谈MySQL数据库备份的几种方法
2.mysqlhotcopy备份【如果是企业版的mysql可以用mysqlbackup当然是要收费的】mysqlhotcopy 是一个 PERL 程序。它使用 LOCK TABLES、FLUSHTABLES 和 cp 或 scp来快速备份数据库。它是备份数据库或单个表的最快的途径,但它只能运行在数据库文件(包括数据表定义文件、数据文件、索引文件)所在的机器上。

阿城区15694545235: MySQL CPU占用过高怎么办 -
游姬健儿: cpu占用过高解决方法如下:1、同时按住键盘上Ctrl+Alt+Delete,点击“启用任务管理器(T)”就可以看到CPU使用率是多少了.(这里只有27%,因为没有运行游戏,后台程序也没有打开很多.)2、按组合键Win+R进入运行窗口输入“msconfig”点击“启动”,把不需要的程序禁用掉,程序不要打开太多,就可以减少CPU的使用率了.

阿城区15694545235: mysql数据库cpu飙升到500%的话他怎么处理 -
游姬健儿: 运行平稳的数据库,如果遇到CPU狂飙,到80%左右,那一定是开发写的烂SQL导致的,DBA首先要保证的是,数据库别跑挂了,所以我们要把那些运行慢的SQL杀死并记录到文件里,以便后面的排查. 这里用到一个工具pt-kill,它可以帮助你

阿城区15694545235: mysql中cpu负载很高,是什么原因 -
游姬健儿: mysql中cpu负载很高,是什么原因1、确定高负载的类型 htop,dstat命令看负载高是CPU还是IO 看具体是哪个用户哪个进程占用了相关系统资源,当前CPU、内存谁在使用2、监控具体的sql语句,是insert update 还是 delete导致高负载 抓取mysql...

阿城区15694545235: mysql经常占用cpu100%以上,该怎么解决 -
游姬健儿: 有多个原因可至CPU高占用,当访问数量非常高的时候,安装程序没有完成,自身的更新进行过程,都会发生.可将网络断开,让数据库在无访问情况下,看占用高不高,再就是大的访问量的情况,如果是此原因引起的,那只能优化访问的语句,降低访问次数,我也见过一些人,无限制地任意使用SQL语句,至数据库负荷重.

阿城区15694545235: MySQL占用CPU资源特别高是什么原因 -
游姬健儿: 看下慢查询日志 是否存在效率低下的 sql 语句 如果有 优化之 看下是否负载过高 如果是 考虑做成主从架构 看下有没有死锁 如果有 解锁之 看下 buffer 和 cache 设置是否合理 如果不合理 调整之 看下是否数据量过大 如果是 考虑分库分表

阿城区15694545235: mysql cpu 占用高 -
游姬健儿: 简单的分为下面几个步骤来解决这个问题: 1、mysql运行正常,也有可能是同步设置问题导致 2、如果mysql运行正常,那就是php的一些sql语句导致问题发现,用root用户进入mysql管理 mysql -u root -p 输入密码 mysql:show processlist 语句,查...

阿城区15694545235: 求助mysql频繁查询.严重占用CPU.怎么办 -
游姬健儿: 方法有很多,你可以参考一下:1、针对大量查询的表建立合适的索引,减少每次查询速度.2、对数据库做读写分离,主库用于写操作,备库用于读操作,这样可以很好的分担主库的压力,提高响应速度.

阿城区15694545235: mysqlcpu占用过高怎么办 -
游姬健儿: 分析处理 CPU占用率高的几种可能 1防杀毒软件造成的故障 由于新版的金山,瑞星都加入了对网页,插件,邮件的随机监控,无疑增加了系统的负担, 解决方法:基本上没有合理的处理方式,尽量使用最少的监控服务,或者升级硬件设陪, 2驱动没有经过认证 驱动没有经过认证,造成CPU资源占用100%,大量的测试版驱动再网上滥用 ,早晨了难以发现的故障原因,解决方法,建议使用微软认证的或者官方发布的驱动,并且严格核对型号,版本, 3病毒,木马造成 大量的蠕虫病毒再系统类大量复杂,造成CPU句高不下,解决方法,用可靠的杀毒软件进行彻底查杀,并且查看是否有异常的软件或者插件,

阿城区15694545235: 怎么找到找出哪个SQL语句导致cpu占用如此高
游姬健儿: 有一个程序在运行,期间一直在调用mysql数据库做一些工作.数据没经过特别的配置等优化工作. 程序并没有特别耗费资源的数据库调用,一般一秒中最多也就是几十次数据库访问,有时候甚至更低,几次而已,数据库表中也无过多记录的表,除...

阿城区15694545235: Mysql 有一个表把cpu拖到90%以上 -
游姬健儿: 这种情况只有一种可能,那就是软件编制有问题……编制软件的时候或者走了复杂的路径,或者用了更占资源的算法,所以才把cpu占用率拉高了.优化一下软件吧,就可以解决问题了.

你可能想看的相关专题

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网