mysql负载飙高原因分析

某些进程/服务消耗更多CPU资源(服务响应更多请求或存在某些应用瓶颈);
发生比较严重的swap(可用物理内存不足);
发生比较严重的中断(因为SSD或网络的原因发生中断);
磁盘I/O比较慢(会导致CPU一直等待磁盘I/O请求);

绝对不要因表数据量小,sql语句随便写都行,随便join都不会出现性能瓶颈,决不能有这
种思想。
尽量避免join表 join表笛卡尔积
如果要join表一定要把where条件写全,安全起见最好加个limit。
一次请求读写的数据量太大,导致磁盘I/O读写值较大,例如一个SQL里要读取或更新几万>行数据甚至更多,这种最好是想办法减少一次读写的数据量;

SQL查询中没有适当的索引可以用来完成条件过滤、排序(ORDER BY)、分组(GROUP BY)
、数据聚合(MIN/MAX/COUNT/AVG等),添加索引或者进行SQL改写吧;
瞬间突发有大量请求,这种一般只要能扛过峰值就好,保险起见还是要适当提高服务器的>配置,万一峰值抗不过去就可能发生雪崩效应;
因为某些定时任务引起的负载升高,比如做数据统计分析和备份,这种对CPU、内存、磁盘
I/O消耗都很大,最好放在独立的slave服务器上执行;
服务器自身的节能策略发现负载较低时会让CPU降频,当发现负载升高时再自动升频,但通
常不是那么及时,结果导致CPU性能不足,抗不过突发的请求;
使用raid卡的时候,通常配备BBU(cache模块的备用电池),早期一般采用锂电池技术,>需要定期充放电(DELL服务器90天一次,IBM是30天),我们可以通过监控在下一次充放电
的时间前在业务低谷时提前对其进行放电,不过新一代服务器大多采用电容式电池,也就>不存在这个问题了。
文件系统采用ext4甚至ext3,而不是xfs,在高I/O压力时,很可能导致%util已经跑到100%了,但iops却无法再提升,换成xfs一般可获得大幅提升;
内核的io scheduler策略采用cfq而非deadline或noop,可以在线直接调整,也可获得大幅
提升。

时间: 2024-10-07 22:20:54

mysql负载飙高原因分析的相关文章

MYSQL数据库服务CPU高问题分析与优化

MySQL服务性能监控分析与优化是永恒的主题,做为性能测试人员有时也要站在DBA角度出发进行适当分析与优化,这也是性能测试人员能长期生存发展之路.而资源的使用监控分析才是性能故障分析的根本首要任务.在数据库服务器内部,如果执行的操作会严重受到内存.CPU或磁盘吞吐量中任何一个的影响,则可以将它视为瓶颈. 因此理解服务器如何运行,资源损耗在哪些方面对问题进行故障诊断是非常有价值有意义的活动,具体案例如下. 这些监控分析优化方法等细节我们在品课学院性能实战课堂中都会以实战方式进行实操性测试监控分析实

java线程数过高原因分析

作者:鹿丸不会多项式  出处:http://www.cnblogs.com/hechao123   转载请先与我联系. 一.问题描述 前阵子我们因为B机房故障,将所有的流量切到了A机房,在经历了推送+自然高峰之后,A机房所有服务器都出现java线程数接近1000的情况(1000是设置的max值),在晚上7点多观察,java线程数略有下降,但还是有900+的样子,而此时,单台服务器的TPS维持在400/s,并不是一个特别大的量.然后将A机房一台机器下线,继续观察,到了晚上9点多,那台下线的机器,j

MySQL Slave 触发 oom-killer 原因分析

最近经常有收到MySQL实例类似内存不足的报警信息,登陆到服务器上一看发现MySQL 吃掉了99%的内存,God ! 有时候没有及时处理,内核就会自己帮我们重启下MySQL,然后我们就可以看到 dmesg 信息有如下记录: Mar 9 11:29:16 xxxxxx kernel: mysqld invoked oom-killer: gfp_mask=0x201da, order=0, oom_adj=0, oom_score_adj=0Mar 9 11:29:16 xxxxxx kernel

MySQL Err 1418 的原因分析及解决方法

MySQL的有个参数log_bin_trust_function_creators,官方文档对这个参数的介绍.解释如下所示: This variable applies when binary logging is enabled. It controls whether stored function creators can be trusted not to create stored functions that will cause unsafe events to be writte

CentOS进程资源占用高原因分析命令

1.查看进程的线程:ps -eLf|egrep 'gateserver|UID' 2.跟踪线程调用: strace  -p 15530 3.统计线程中函数的调用小号CPU时间:strace  -p 16334 -c IT网.cn,http://www.it.net.cn strace  -p 15530 -o out.file #输出到out.file文件 4.只显示recv函数的调用:strace  -p 5314 -f -F -e recv 5.gdb调试线程:gdb  -p  pid 6.

linux进程资源占用高原因分析命令记录

1.查看进程的线程: ps -eLf|egrep 'gateserver|UID' 2.跟踪线程调用: strace -p 15530 3.统计线程中函数的调用小号CPU时间: strace -p 16334 -c strace -p 15530 -o out.file #输出到out.file文件 4.只显示recv函数的调用: strace -p 5314 -f -F -e recv 5.gdb调试线程: gdb -p pid 6.查看线程打开的文件描述符: lsof -p pid

网站访问慢-MySQL负载高(实战)

   今日发现网站访问慢,一次进行了排查,开始思路混乱,下面来梳理下 一.故障分析 首先,判断访问慢现象,是个人还是集体??? 个人现象排查:检查个人网络,pc,浏览器.中毒等,无需多说自己百度: 集体现象排查:检查核心路由交换,ISP运行商网络,ARP攻击,DNS服务,各服务器状态: 服务状态排查:zabbix监控:创建测试页面测试: 静态页面=>动态页面=>动态交互页面 通过上述排查,当测试php与mysql动态交互页面很慢,所以确定为mysql服务器异常,立刻登录mysql,通过top命

几个常用的内存、CPU飙高 分析工具

Process Hacker.Windbg.vs2017 调试托管内存.Microsoft.Samples.Debugging.ants memory profiler.ants performance profiler 有时间详细介绍这几个工具怎么玩,不过这几个工具只是辅助分析飙高原因,都很难直接定位,需要经验......

cpu使用率低负载高,原因分析

原因总结 产生的原因一句话总结就是:等待磁盘I/O完成的进程过多,导致进程队列长度过大,但是cpu运行的进程却很少,这样就体现到负载过大了,cpu使用率低. 下面内容是具体的原理分析:在分析负载为什么高之前先介绍下什么是负载.多任务操作系统.进程调度等相关概念. 什么是负载 什么是负载:负载就是cpu在一段时间内正在处理以及等待cpu处理的进程数之和的统计信息,也就是cpu使用队列的长度统计信息,这个数字越小越好(如果超过CPU核心*0.7就是不正常) 负载分为两大部分:CPU负载.IO负载 例