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_running | MySQL |
---|---|
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、从给出来的到结论可以看出
博客学习转载于: https://blog.csdn.net/zsx0728/article/details/114536258 标签:running,Running,Threads,MySQL,QPS,转速表,RPM From: https://www.cnblogs.com/harda/p/16995506.html