如何查看mysql负载

如何查看mysql负载,第1张

这个问题并不是转义方面的问题,不信的话可以使用\s的完整模式status试试:

sql = 'status'

还是一样会报错,这是因为\s属于mysql的系统命令,并不输入sql语句的范畴,所有使用python的mysqldb模块是获得不到结果的。

这样的话只能从python的os模块执行系统命令方面入手了

>>>import os

>>>os.system("mysql -u root -e status")

--------------

mysql Ver 14.15 Distrib 6.0.11-alpha, for portbld-freebsd7.2 (i386) using 5.2

Connection id: 66

Current database:

Current user: root@localhost

...

...

或者

>>>print os.popen("mysql -u root -e status").read()

--------------

mysql Ver 14.15 Distrib 6.0.11-alpha, for portbld-freebsd7.2 (i386) using 5.2

Connection id: 67

...

...

先用 top 命令查看一下 如下图:

就看画框的地方

load average 就是 CPU 的 Load

它表示 CPU 使用队列的长度 这个数字越小越好

这里有一个误区 那就是 CPU 利用率高 并不意味着负载就一定大

比方说有一个程序 它一直使用 CPU 进行运算 那么 CPU 的使用率可能逼近 100% 但是 CPU 的工作负载趋近于 1 如果同时执行两个这样的程序 则 CPU 的使用率还是逼近 100% 但是工作负载变成 2 了

也就是说 如果 CPU 的工作负载大 就代表 CPU 要在多个工作之间切换

mysql中cpu负载很高,是什么原因

1、确定高负载的类型 htop,dstat命令看负载高是CPU还是IO

看具体是哪个用户哪个进程占用了相关系统资源,当前CPU、内存谁在使用

2、监控具体的sql语句,是insert update 还是 delete导致高负载

抓取mysql包分析,一般抓3306端口的数据 看出最繁忙的sql语句了

3、检查mysql日志

分析mysql慢日志,查看哪些sql语句最耗时

检查mysql配置参数是否有问题,引起大量的IO或者高CPU *** 作

innodb_flush_log_at_trx_commit 、innodb_buffer_pool_size 、key_buffer_size 等重要参数

4、检查硬件问题


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/6159527.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-16
下一篇 2023-03-16

发表评论

登录后才能评论

评论列表(0条)

保存