1、起因

某日下午18:40开始,接收到滕讯云短信报警,显示数据库CPU使用率已超过100%,同时慢查询日志的条数有1500条左右。

正常情况下:CPU使用率为30%-40%之间,慢查询日志条数为0.

2、查询原因

因接收短信时,正好在回家的路上,无法处理,所以只能到家再处理。

在路上的时候,接收了几次恢复短信和再次异常短信。说明问题是一时有,一时恢复。

到家后,登录腾讯云数据库控制台,查询监控,发现CPU使用率确实为145%,且持续时间是20分钟。

18:40-19:00

19:20-19:40

然后,我登录腾讯云的phpMyAdmin控制台,想尝试看下有哪些查询正在发生。于是执行了show processlist命令,不巧的是,我执行命令的时候,高峰期已过,看不到任何查询。

于是,我下载了18:00-19:00之间的慢查询日志文件,想从中找到问题。下载之后,发现第一条慢查询开始的时间正是18:41分钟。且查看整个文件,发现都是同一条SQL语句,查询的是同一张表,且uid始终是同一个。

由于我对于业务不是很熟悉,于是我将这些SQL语句截图发给了开发人员。开发人员在看到SQL语句后,找到了相应的代码位置,并告诉了我,引发该SQL查询的原因是请求了某个地址,/account/...。

然后我下载了负载均衡的访问日志,只下载了18:00-19:00时间段的。我根据开发人员提供的URI,查询日志,发现真有记录。

然后,我尝试过滤该日志,以确定访问地址。我首先过滤整个日志,以统计/account/...出现的数量。发现数量为7900条。为了得知这7900条是否为18:00-19:00出现的,于是我单独过滤了日志中带"18:4"字符串的数量以及"19:5"字符串的数量。发现两者加起来的数量为7600条。说明这7900条请求确实是从18:40-19:00这个时间段开始发起的。

且很明显的是,所有请求来自同一个IP地址。原因很明显了,就是某个白痴在发起异常请求。

3、处理办法

首先在负载均衡的防火墙上限制了该IP的访问。然后开发人员也加上了CSRF。

记录一次MySQL数据库CPU负载异常高的问题的更多相关文章

  1. MySQL数据库CPU飙升紧急处理方法

    MySQL数据库CPU飙升紧急处理方法 运行平稳的数据库,如果遇到CPU狂飙,到80%左右,那一定是开发写的烂SQL导致的,DBA首先要保证的是,数据库别跑挂了,所以我们要把那些运行慢的SQL杀死并记 ...

  2. 【Nginx】如何使用Nginx实现MySQL数据库的负载均衡?看完我懂了!!

    写在前面 Nginx能够实现HTTP.HTTPS协议的负载均衡,也能够实现TCP协议的负载均衡.那么,问题来了,可不可以通过Nginx实现MySQL数据库的负载均衡呢?答案是:可以.接下来,就让我们一 ...

  3. CPU负载过高异常排查实践与总结

    昨天下午突然收到运维邮件报警,显示数据平台服务器cpu利用率达到了98.94%,而且最近一段时间一直持续在70%以上,看起来像是硬件资源到瓶颈需要扩容了,但仔细思考就会发现咱们的业务系统并不是一个高并 ...

  4. 查询mysql数据库启动时间抛异常

    mysql 5.7.10使用dbforget Studio 连接异常 提示:The'INFORMATION_SCHEMA.SESSION_VARIABLES' feature is dis 查看mys ...

  5. 记录--linux下mysql数据库问题

    本次主要记录一下linux下mysql数据库的一些问题,也是之前经常用到的知识,这里简单总结一些问题,方便自己以后的回顾.原来一直使用的是阿里云的RDS数据库mysql版,主要是因为上次阿里云做活动可 ...

  6. 服务器cpu负载过高问题排查

    https://blog.csdn.net/MrZhangXL/article/details/77711996 第一步 :执行top命令,查出当前机器线程情况 top - 09:14:36 up 1 ...

  7. [Oracle]Oracle数据库CPU利用率很高解决方案

    Oracle数据库经常会遇到CPU利用率很高的情况,这种时候大都是数据库中存在着严重性能低下的SQL语句,这种SQL语句大大的消耗了CPU资源,导致整个系统性能低下.当然,引起严重性能低下的SQL语句 ...

  8. [ Mariadb ] 记录一次MySQL数据库时区的问题

    操作系统:Centos 7数据库:5.5.52-MariaDB 根本问题:由于系统时区不对,造成数据库的时区和数据的时间不正确. 处理办法: # 查看系统时区, [root@mongodb ~]# t ...

  9. springboot整合mybatis连接mysql数据库出现SQLException异常

    在springboot整合mybatis连接数据库的时候,项目中遇到一个SQLException,我检查了properties配置文件,看数据源有没有配错,检查有没有打错字,在数据库中把sql语句查询 ...

随机推荐

  1. linux R环境安装以及注意事项

    安装Ryum install Ryum install readline-develyum install libXt-devel 1.安装后在R命令行启动Rserve,在脚本中不要重复加载Rserv ...

  2. CSS:CSS 盒子模型

    ylbtech-CSS:CSS 盒子模型 1.返回顶部 1. CSS 盒子模型 CSS 盒子模型(Box Model) 所有HTML元素可以看作盒子,在CSS中,"box model&quo ...

  3. git分布式版本控制系统权威指南学习笔记(五):git checkout

    文章目录 分离头指针 通过cat可以查看当前的分支 通过branch查看当前分支 checkout commitId(真正的

  4. Netty 相关目录

    Netty 相关目录 Netty 源码学习--客户端流程分析 Netty 源码学习--服务端流程分析 Netty 源码分析--ChannelPipeline Netty 源码学习--EventLoop ...

  5. shell提取rpm的报名

    说明: rpm本身未安装,下面方法是基于rpm包文件实现提取rpm的包名 rpm -qpi ZXVEi-git0/CgsOS/abrt-2.1.11-48.el7.centos.x86_64.rpm ...

  6. 通过java api 读取sql 中数据(查询)

    配置文件:dbconfig.properties 里面的数据 jdbc.url.jwhat=jdbc\:mysql\://ip\:3306/laibadev?useUnicode\=true& ...

  7. JDK在Win10与Ubuntu下的安装与配置

        本文首发于cartoon的博客     转载请注明出处:https://cartoonyu.github.io/cartoon-blog     近段时间把自己电脑(win).虚拟机(Ubun ...

  8. python调用tushare获取股票日线实时行情数据

    接口:daily 数据说明:交易日每天15点-16点之间.本接口是未复权行情,停牌期间不提供数据. 调取说明:基础积分每分钟内最多调取200次,每次4000条数据,相当于超过18年历史,具体请参阅本文 ...

  9. Install .NET Core Runtime on Linux Ubuntu 16.04 x64

    原文链接https://www.microsoft.com/net/download/linux-package-manager/ubuntu16-04/runtime-current nstall ...

  10. properties配置文件的基本操作

    对properties的基本操作 public class PropertiesUtil {// 是否是文件public static boolean isFile = false;// 路径publ ...