如何测量MySQL服务器的当前负载?

16

如何测量MySQL服务器的当前负载?我知道可以测量不同的东西,比如CPU使用率、RAM使用率、磁盘IO等等,但是否有一种通用的负载测量方法,例如服务器负载为40%等等?

7个回答

19
mysql> SHOW GLOBAL STATUS;

在这里找到


我认为 OP 想要单个加载度量,而不是状态查询提供的细粒度详情。 - whatnick
此要求並未明確要求。 - Andrew Sledge

8
“40%负载”这个概念并没有明确定义。你的应用程序在不同资源上会有不同的反应。应用程序通常会受到以下三个因素中的一个限制:可用(物理)内存、可用CPU时间和磁盘IO。
在Linux(或其他* NIX)系统上,您可以使用 vmstat 或 iostat(提供有关磁盘IO的更多详细信息)对这些内容进行快照。
但是,要将这些内容连接到“40%负载”,您需要了解您的数据库在典型负载下的性能特征。最好的方法是在不同负载量下测试典型查询,直到您观察到响应时间急剧增加(这意味着您已经达到了内存、CPU或磁盘的瓶颈)。这种负载应该被视为您不希望超过的临界水平。

6

是否有一种通用的负载度量,比如服务器负载为40%?

是的!有:

SELECT LOAD_FILE("/proc/loadavg")

适用于Linux机器。它显示过去1、5和15分钟的系统负载平均值。

系统负载平均值是处于可运行或不可中断状态的进程数量的平均值。 处于可运行状态的进程正在使用CPU或等待使用CPU。 处于不可中断状态的进程正在等待某些I / O访问,例如等待磁盘。 平均值取自三个时间间隔。 负载平均值未经过系统中CPU数量的归一化处理,因此负载平均值为1表示单个CPU系统始终处于负载状态,而在4个CPU系统上,它表示75%的时间处于空闲状态。

因此,如果您想进行归一化处理,还需要计算CPU的数量。

您也可以使用以下方式进行计算

SELECT LOAD_FILE("/proc/cpuinfo")

参见 'man proc'


3
两个函数都返回了 NULL 值。在 Ubuntu 和 Osx 上尝试过。 - siniradam
@siniradam,请确保MySQL能够通过变量“secure_file_priv”访问此路径。默认情况下,/proc未列出,因此返回NULL。 - Odubuc

5

使用 top 或 htop 工具可以实时查看 Linux 的使用情况。


1
顶部不显示磁盘使用情况,而对于数据库来说,大多数情况下磁盘使用情况更为重要。 - NickSoft

2
在基于Linux的系统中,通常使用uptime进行标准检查,该指标根据这里描述的度量返回负载指数。

1
除了本页面上所有好的答案(SHOW GLOBAL STATUS、VMSTAT、TOP...)之外,还有一种非常简单易用的工具,由Jeremy Zawodny编写,非常适合非管理员用户使用。它被称为“mytop”。更多信息请参见http://jeremy.zawodny.com/mysql/mytop/

0

你好,根据我的研究,我们有一些命令,比如:

  • MYTOP:使用PERL语言编写的开源程序
  • MTOP:也是一个使用PERL编写的开源程序,它与MYTOP的功能相同,但它会监视那些执行时间较长的查询,并在特定时间后终止它们。

以上命令详细信息链接


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接