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

Tem*_*vit 14 mysql performance cpu-usage

我的 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
Run Code Online (Sandbox Code Playgroud)

这是MySQLTuner的输出:

MySQLTuner 输出

top命令:

最高输出

这个问题的原因可能是什么?我可以更改我的my.cnf以防止服务器挂起吗?

sha*_*ndy 18

  1. 增加 Key Buffer(你的目前是 64MB,但总索引是 116M,所以至少放 128MB)。应该立即帮助。
  2. 在你的表上运行mysqloptimizemysqlrepair
  3. 增加表缓存/减少表总数以提高表缓存命中率。也许您有一些可以删除的未使用或旧表。

其他推荐的配置选项:

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

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


Kyl*_*ley 5

您的处理器具有多个内核,或者您有多个处理器。如果您有两个内核并且一个进程使用 100% 的两个内核,则它会在顶部显示为 200%。

同样,这可能按预期工作——您的配置没有任何问题。如果您经常遇到挂起的情况,根据您发布的内容,您可能需要考虑向您的表添加适当的索引(或优化您的查询)。


Nia*_*gan 5

运行top -H以查看所有正在运行的线程,而不仅仅是整个进程。此外,如果您1在顶部按下键,它会显示各个 CPU/内核的 CPU 使用率。