当我在我的Linux上运行“top”命令时,它显示MySQL正在使用400%-500%的CPU使用率。 但是当我运行“watch mysqladmin pr”命令来查看MySQL正在运行的查询列表时,它只显示2,3个查询,而且也只需要2,3秒。 “top”命令显示MySQL不断波动的CPU使用率,如130%,200%,340%,230%,400%,440%,635%,335%等,但“watch mysqladmin pr”命令没有显示正在查询CPU使用率。 我如何检查为什么MySQL使用这么多的CPU?
这里有两件事情想起来:
观察1
当MySQL导致CPU频繁波动时,我首先会检查MySQL的安装types。 MySQL RPM通常包含针对特定平台进行了优化的二进制文件。 另一方面,从源代码编译的MySQL二进制文件往往不够精简。 这样的二进制文件可能会在编译时膨胀而不是优化,以利用内存。
观察2
如果InnoDB缓冲池(innodb_buffer_pool_size)或MyISAM密钥caching(key_buffer_size)configuration不当或过度configuration,则可能会花费时间清除caching而不存在新的查询。