MySQL进程超过100%的CPU使用率


10

我的LAMP服务器遇到一些问题。最近,即使我网站上的访问者人数没有太大变化,一切也变得非常缓慢。当我运行top命令时,它说MySQL进程占用了150-200%以上的CPU。怎么可能,我一直以为最大是100%?

我正在运行具有1.5 GB RAM的Ubuntu 9.04服务器版本。

my.cnf 设置:

key_buffer      = 64M
max_allowed_packet  = 16M
thread_stack        = 192K
thread_cache_size       = 8

myisam-recover         = BACKUP
max_connections        = 200
table_cache            = 512
table_definition_cache = 512
thread_concurrency     = 2

read_buffer_size = 1M
sort_buffer_size = 4M
join_buffer_size = 1M

query_cache_limit   = 1M  # the maximum size of individual query results
query_cache_size    = 128M

这是MySQLTuner的输出:

MySQLTuner输出

top命令:

最高输出

造成此问题的原因是什么?我可以进行更改以my.cnf防止服务器挂起吗?

Answers:


15
  1. 增加密钥缓冲区(您当前的大小为64MB,但总索引为116M,因此请至少放置128MB)。应该立即提供帮助。
  2. 在表上运行mysqloptimizemysqlrepair
  3. 增加表缓存/减少表总数以增加表缓存命中率。也许您有一些未使用的表或旧表可以删除。

其他推荐的配置选项:

  • log_slow_queries = /var/log/mysql/mysql-slow.log
  • long_query_time = 4
  • 日志查询未使用索引

一段时间后检查日志文件。


感谢您的建议,我会尝试的,并告诉您是否有帮助。
Temnovit 2011年

请告诉我,您如何计算总索引为116M?
Temnovit 2011年

我自己得到的:)
Temnovit 2011年

5

您有一个具有多个内核的处理器,或者您有多个处理器。如果您有两个核心,而某个进程正在使用两个核心的100%,则其顶部将显示为200%。

同样,这很可能按预期工作-配置没有问题。如果您经常遇到因挂起而引起的挂起,则可能需要考虑向表中添加适当的索引(或优化查询)。


5

运行top -H以查看所有正在运行的线程,而不仅仅是整个过程。另外,如果您1在最上方按下按键,它将显示各个CPU /内核的CPU使用率。


谢谢,这确实对我有帮助-使用top已有多年,但不知道它具有这种功能。我发现有一个“永恒”的mysql线程一直消耗60%的用户CPU,而查询线程又在此之上。现在找出这个线程实际上在做什么...
scipilot 16-4-22

1

Mysql有多个独立运行的进程(线程),例如,一个进程负责将内存中的数据写入磁盘。在CPU(和/或多个CPU)中有多个内核的情况下,一个以上的线程正在工作,因此它可以运行单个内核的100%以上-简单地说,两个内核中每个内核的75%都在运行,得出150%。


1

我注意到一个问题,与CPU无关。如果您在同一台服务器上使用apache和MySQL,则当apache活动增加时,可能会遇到不良情况(RAM)。

MySQLTunner告诉您,使用200个可用的连接(您的最大连接设置),您将填充RAM。假设您将apache限制为150个进程,那么当MySQL和apache尝试使用150个连接时,肯定会没有足够的RAM(因为Apache也是一个很好的RAM食用者)。

因此,这是关于RAM的,您可能尚未被击中:-)顶部命令仅显示15个apache进程(但您的平均负载为3/6/16,因此这意味着风暴发生在15分钟前,而现在处于离开)。

关于CPU问题,为了补充shakalandy的良好响应,这可能是由于一个查询。它可以在一个巨大的表上,或执行大量的重新索引任务,或使用大量的临时文件,索引丢失(删除?)等,唯一的检测方法是激活慢查询日志(也许具有较高的阈值,例如8s)。然后使用mysqlsla工具分析此缓慢的查询日志,并对已识别的查询进行一些解释。


谢谢你,的确,mysql并不是唯一的过程:)
Temnovit 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.