如何测量 MySQL 服务器的当前负载?
Posted
技术标签:
【中文标题】如何测量 MySQL 服务器的当前负载?【英文标题】:How to measure current load of MySQL server? 【发布时间】:2009-10-01 15:23:22 【问题描述】:我知道我可以测量不同的东西,如 CPU 使用率、RAM 使用率、磁盘 IO 等,但是否有通用的负载测量,例如服务器处于 40% 负载等?
【问题讨论】:
【参考方案1】:mysql> SHOW GLOBAL STATUS;
找到here。
【讨论】:
我相信 OP 想要一个单一的负载度量,而不是状态查询提供的细粒度细节。 没有明确要求此要求。【参考方案2】:“40% 负载”的概念并没有明确定义。您的特定应用程序可能会对不同资源的限制做出不同的反应。应用程序通常会受到以下三个因素之一的约束:可用(物理)内存、可用 CPU 时间和磁盘 IO。
在 Linux(或可能的其他 *NIX)系统上,您可以使用 vmstat
或 iostat
(提供有关磁盘 IO 的更多详细信息)获取这些快照。
但是,要将这些连接到“40% 负载”,您需要了解数据库在典型负载下的性能特征。最好的方法是在不同负载量下使用典型查询进行测试,直到您观察到响应时间急剧增加(这意味着您遇到了内存、CPU 或磁盘的瓶颈)。此负载应视为您不想超过的临界水平。
【讨论】:
【参考方案3】:使用 top 或 htop 可以实时跟踪 Linux 中的使用情况
【讨论】:
top 不显示磁盘使用情况,并且在大多数情况下,对于数据库来说,磁盘使用情况更为重要【参考方案4】:是否有通用的负载度量,例如服务器处于 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'
【讨论】:
两个函数都返回一个 NULL 值。在 Ubuntu 和 Osx 上都试过【参考方案5】:在基于 linux 的系统上,标准检查通常是正常运行时间,根据here 描述的指标返回负载索引。
【讨论】:
【参考方案6】:除了这个页面上所有的好答案(SHOW GLOBAL STATUS、VMSTAT、TOP...)之外,还有一个由 Jeremy Zawodny 编写的非常简单易用的工具,非常适合非管理员用户。它被称为“mytop”。更多信息@http://jeremy.zawodny.com/mysql/mytop/
【讨论】:
【参考方案7】:嗨,朋友,根据我的研究,我们有一些命令,例如
MYTOP
:使用PERL语言编写的开源程序
MTOP
: 也是一个基于 PERL 编写的开源程序,它的工作方式与 MYTOP 相同,但它会监控耗时较长的查询,并在特定时间后将其杀死。
Link for details of above command
【讨论】:
以上是关于如何测量 MySQL 服务器的当前负载?的主要内容,如果未能解决你的问题,请参考以下文章