我们最近在一台新服务器上运行了很多复杂的脚本,这需要对MySQL进行大量的监控。服务器一次最多只能运行20个小时。但是,不管Mysql的cpu使用率如何,它的使用时间一直在增长。
我猜这是因为它是一个持续运行的服务,只是想确认这一点。
根据top的说法,mysql已经在380:09.23上运行。
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1697 mysql 20 0 2687376 504752 10036 S 82.3 6.3 380:09.23 mysqld发布于 2019-10-01 20:05:38
MySQL是一个多线程服务。如果它一次处理多个查询,消耗一个以上的CPU核心(在顶部的CPU列中显示超过100% ),则在TIME+列中为这一秒的物理时间添加超过一秒。
您可以通过执行以下命令来监视当前在复合MySQL进程中运行的线程
SHOW PROCESSLIST;在mysql控制台中(即通常向此服务器发出SQL语句的位置)。
添加:
我有一个低吞吐量的MySQL 5.6实例,自2018年1月4日以来一直没有重启过。它运行在debian的裸机机器上,它通常不会有很多空闲的连接挂起(我现在看到两个)。从那时起,它已经消耗了大约2225分钟的CPU时间:
$ ps -eo pid,lstart,time,cmd | grep mysql
3895 Thu Jan 4 23:09:11 2018 1-13:04:45 /usr/sbin/mysqld ...$ date; ps aux | grep mysql
Tue Oct 1 16:37:16 UTC 2019
mysql 3895 0.2 10.7 439512 223352 ? Sl 2018 2224:37 /usr/sbin/mysqld
$ date; ps aux | grep mysql
Tue Oct 1 18:57:50 UTC 2019
mysql 3895 0.2 10.7 439512 223352 ? Sl 2018 2224:55 /usr/sbin/mysqld因此,至少对于该实例而言,在未实际执行工作的情况下添加TIME+度量是不正常的。
我怀疑,在虚拟环境中,如果没有相应的%CPU,TIME+可能会增加,但您仍然需要监视进程列表,并可能显示引擎INNODB状态,以捕获在这种情况下消耗CPU周期的是什么。
https://stackoverflow.com/questions/58183236
复制相似问题