MySQL Threads Running

1、 广电告警背景如下: 

主机:xxxx:3306,MySQL 运行的Thread大于30,请关注,2021-07-15 15:30:00

2、猜测是因为业务量造成?

3、mysql thread running 的理解 
 每秒查询次数(Queries per second,QPS)可以衡量数据库的吞吐量,但不能反映MySQL的工作强度。后者由Threads_running度量,表示为量表(而QPS是速率)。在讨论Threads_running之前,让我们考虑一个类比:
上图是来自汽车的数字仪表板。左边的大圆圈是车速表,右边的大圆圈是转速表。车速表是大多数人所熟悉的:它们显示汽车行驶的速度。在上面,车速表的读数为84 km/h。转速表很常见,但并不是每个仪表盘都包含转速表。它们显示了发动机的工作强度,以每分钟转数(RPM)为单位。在上面,转速表的读数接近3,000 RPM。(转速表中间的“ M3”是变速箱齿轮。我们可以忽略这一点)
    QPS与速度(84 km/h)类似,而Threads_running与RPM(〜3k RPM)类似。
    速度和RPM的变化受多种因素的影响:加速和减速,上坡或下坡,逆风或逆风,以及(在越来越多的新车中)计算机编程可优化燃油经济性。因此,在不同的转速下可以达到相同的速度,但是通常汽车在较低的转速下燃烧较少的燃料,而在较高的转速下燃烧较多的燃料。同样,较高的RPM意味着发动机上的应力更大,从而增加了机械故障的机会。我们关心燃烧燃料和机械故障,因为两者都使我们付出了金钱。这就是为什么汽车配备转速表的原因:RPM是一项重要指标。
    QPS 和 Threads_running 也因许多因素而有很大差异:硬件规格(CPU内核和速度,存储类型和IOPs等),查询类型(读或写),查询计划,表大小,行大小,表模式(列类型,索引-特别是索引),数据访问模式(全读或全写或混合),“嘈杂的邻居”,一天中的时间(例如营业时间),一年中的时间(例如纳税季节),特殊促销,糟糕的演员,等等-随便你说吧!因此,与汽车一样,相同的QPS可以在不同的Threads_running上实现,因此这是一个重要的指标。 
Threads_running表示MySQL的工作强度。我工作的几个数据库仅运行10个线程即可完成10,000 QPS。其他人则需要运行100个线程才能达到3,000 QPS。从前面的段落中,我们知道原因:各种变化的因素。
    仅QPS不能告诉我们MySQL是否在给系统施加压力,或者,形象的说,它是否开始烧油并停止运转。
监视和处理运行中的高Threads_running是至关重要的。转速表有一个最大值,你通常不能把车推到它之外,但是MySQL非常有野心:它没有最大值,它会根据需要运行尽可能多的线程。它会尝试,但会随着Threads_running的增加而变慢并最终失败:

mysql的线程数是否有影响对比
Threads_runningMySQL
0 - 10 Normal:几乎所有硬件都没问题
10 - 30 Busy:大多数硬件通常都可以,因为服务器多核
30 - 50 High:很少有工作负载需要运行这么多线程。它可以短期爆发(<5min),但如果持续时间较长,则响应时间很可能很慢
50 - 100 Overloaded:某些硬件可以处理此问题,但是不能期望在此范围内成功运行。对于我们的本地部署硬件而言,此范围内的瞬时突发(<5s)通常是可以的。
> 100 Failing:在极少数情况下,MySQL可以运行大于100个线程,但在此范围内可能会失败

  建议指导值:

    • Threads_running < 50
    • 1:1000 Threads_running:QPS

  • 4、从给出来的到结论可以看出
 MySQL 运行的Thread大于30是mysql的工作强度增加,增加线程可能性较多,如果短期爆发时间小于5分钟,可以忽略,如果持续时间较长一定要注意观察,分析那个具体的原因。持续时间长后,mysql的响应速度会降低!

博客学习转载于: https://blog.csdn.net/zsx0728/article/details/114536258
posted @   Harda  阅读(939)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示