MySQL的CPU时间应该这么长吗?
我们最近在一台新服务器上运行了很多复杂的脚本,这需要对MySQL进行大量监控。服务器一次最多只能运行20小时。但不管Mysql的cpu使用时间是多少,它都会一直持续下去 我猜这是因为这是一个持续运行的服务,但只是想确认一下 根据MySQL的CPU时间应该这么长吗?,mysql,centos,Mysql,Centos,我们最近在一台新服务器上运行了很多复杂的脚本,这需要对MySQL进行大量监控。服务器一次最多只能运行20小时。但不管Mysql的cpu使用时间是多少,它都会一直持续下去 我猜这是因为这是一个持续运行的服务,但只是想确认一下 根据topmysql已经运行了380:09.23 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1697 mysql 20 0 2687376 504752
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
MySQL是一种多线程服务。如果它一次处理多个查询,消耗多个CPU核心(在顶部的CPU列中显示为100%以上),那么在时间+列中为这一秒的物理时间添加了多个秒 您可以通过发出
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 ...
我还做了两次民意调查,在140分钟的物理时间内增加了15秒的CPU时间:
$ 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
因此,至少在这种情况下,在没有执行实际工作的情况下添加时间+度量是不正常的
我怀疑在虚拟环境中,如果没有相应的%CPU,时间+可能会增加,但是,您仍然需要监视PROCESSLIST,并可能显示ENGINE INNODB状态,以捕获在这种情况下消耗CPU周期的内容。也许这里更大的问题是,您知道在这段时间内是否有使用MySQL的服务,使用级别是否与您预期的大致相同?@TimBiegeleisen我不希望一个脚本或查询运行那么长的时间。不,抱歉,这并不能真正回答问题。输出示例显示,在轮询时,它消耗了82%。所以它在做一些有助于时间+增长的事情。如果当时没有运行脚本,那么您可以尝试使用
show processlist
来诊断它正在执行的操作(例如备份过程或其他类似的后台进程)。是的,但在此之前它没有执行任何操作。我只是展示了这个示例,以便您可以查看总时间。熟悉proceslist及其功能。但对于msot部分,它将显示什么都没有发生。mysqldjsut会不断累积时间,不管它是否占用cpu进程。所以我的问题是为什么。这是为了。请张贴您的第一页的顶部输出文本和完整的文本显示完整的进程列表;用于分析。