Mysql总是有很高的CPU使用率

时间:2014-01-03 06:29:53

标签: mysql whm

为什么我的mysql运行此命令并吃了很多我的cpu(55 - 120%) 我尝试了一切。显示进程,并优化我的所有查询,慢查询日志,增加缓冲大小。

此外,我一遍又一遍地杀死这个过程,但它一直在运行。这个命令做什么用的?为什么我的mysql在我的服务器中吃了很多我的cpu?我无法追查高CPU使用率的原因。

命令:

/usr/sbin/mysqld --basedir=/ --datadir=/var/lib/mysql --user=mysql --log-error=/var/lib/mysql/srv1.myserver.com.err --pid-file=/var/lib/mysql/srv1.myserver.com.pid

1 个答案:

答案 0 :(得分:5)

有许多因素会影响数据库性能。这个问题没有直接的解决方案。包括硬件和软件在内的多种因素对此负责。以下几点需要考虑:

  1. 应用程序的高用户负载
  2. 数据库服务器的硬件配置较低或不兼容(处理器,内存,SWAP文件大小等)
  3. 数据库服务器配置不正确

    • 使用Teamquest之类的工具检查系统性能,并根据用户数观察CPU使用情况。在特定时间段内找出系统中正确的用户数。使用以下命令 SELECT username, count(username) FROM session_table_of_application WHERE 1 GROUP BY username; 当CPU使用率变高时,您将能够找到最大用户数。

    • 您还应检查该期间的内存使用情况。 Teamquest也会帮助你。运行[MySQL Tuner][2]以查找MySQL设置中的不匹配。

    • 运行以下命令检查全局状态: select * from information_schema.GLOBAL_STATUS

    • 运行以下命令检查以下重要系统变量: show variables like 'innodb_buffer_pool_size'; show variables like 'innodb_flush_log_at_trx_commit'; show variables like 'innodb_open_files'; show variables like 'innodb_table_locks'; show variables like 'innodb_thread_concurrency'; show variables like 'join_buffer_size'; show variables like 'key_buffer_size'; show variables like 'max_connections'; show variables like 'max_delayed_threads'; show variables like 'max_heap_table_size'; show variables like 'max_tmp_tables'; show variables like 'thread_cache_size'; show variables like 'tmp_table_size'; show variables like 'wait_timeout'; show variables like 'myisam_sort_buffer_size';

    • 可能存在一些利用大量CPU资源的查询。因此,您必须检查在此期间运行的查询列表。运行以下命令: SELECT HOST,COMMAND,TIME,INFO FROM INFORMATION_SCHEMA.PROCESSLIST where command !='sleep' and time>10 and command !='Binlog Dump' order by TIME desc;
  4. 分析您的所有观察结果,然后只有您会找到此问题的原因。可能是硬件负责或需要更正MySQL系统变量。