亚马逊EC2的Linux AMI MySQL的CPU @ 62%空闲时?(EC2 Amazon Li

2019-09-18 22:08发布

我在Amazon的Linux AMI运行MySQL。 没有什么连接到它。 有没有使用MySQL的连接和其他应用程序的运行。 这是完全闲置,不过不失, top报道称,MySQL是使用CPU的62%? 这究竟是为什么?如何解决?

Cpu(s):  0.2%us,  0.2%sy,  0.0%ni, 97.8%id,  0.0%wa,  0.0%hi,  0.0%si,  1.7%st
Mem:   1738504k total,   390708k used,  1347796k free,    56888k buffers
Swap:   917500k total,        0k used,   917500k free,   229804k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 2959 mysql     20   0  466m  39m 5244 S 62.2  2.3   4:00.67 mysqld
    1 root      20   0 19252 1504 1212 S  0.0  0.1   0:00.20 init
    2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd

无可...

mysql> show processlist;
+----+------+-----------+------+---------+------+-------+------------------+
| Id | User | Host      | db   | Command | Time | State | Info             |
+----+------+-----------+------+---------+------+-------+------------------+
|  5 | root | localhost | NULL | Query   |    0 | NULL  | show processlist |
+----+------+-----------+------+---------+------+-------+------------------+

更新:我的问题肯定是关系到领先第二名错误。 荣誉对尼科- ekito 。 谢谢!

Answer 1:

我能想到的唯一的事情就是检查真的是做什么用的mysqld strace的,以用户root:

 strace -p 2959

通常情况下,strace的,应立即阻止,并显示你的电话选择(),因为的mysqld应该等待连接。

呼叫应该是这样的:

 select(SOCKETNO, [OTHER_FDs], NULL, NULL, NULL)

尤其重要的是第四个参数,这是一个超时的timeval。 如果为NULL,则意味着mysqld的会睡觉,直到有人连接。 如果不为NULL,则意味着mysqld的等待指定的时间,然后做一些维护工作。 一个非常小的timeval可以解释的CPU消耗。

我相信,MySQL的总是采用NULL(无限)超时。 这是有道理的,这是我怎么mysqlds我能达到现在表现。

然而,可能会有一些防止再次沉睡选择连接处理的问题。 检查是否为mysqld启动,或有人连接后立即出现此行为。



Answer 2:

关闭了这个问题。 我的问题确实是关系到闰秒惨败。



文章来源: EC2 Amazon Linux AMI MySQL CPU @ 62% When Idle?