查看完整版本: [-- 如何解决MySQL服务器进程CPU占用100%的问题 --]

-> 电脑技术 -> 如何解决MySQL服务器进程CPU占用100%的问题 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

yycadmin 2013-01-12 22:02

如何解决MySQL服务器进程CPU占用100%的问题


  最近为公司一台服务器解决了Mysql数据库cpu占用100%的问题。稍整理了一下,将经验记录在这篇文章里:《解决一个 MySQL服务器进程CPU占用100%的文档》
  朋友主机(Windows 2003 + IIS + PHP + MYSQL )近来 MySQL 服务进程 (mysqld-nt.exe) CPU 占用率总为 100% 高居不下。此主机有10个左右的 database, 分别给十个网站调用。据朋友测试,导致 mysqld-nt.exe cpu 占用奇高的是网站A,一旦在 IIS 中将此网站停止服务,CPU 占用就降下来了。一启用,则马上上升。
  MYSQL数据库CPU占用100%的解决过程
  今天仔细检查了一下。目前此网站的七日平均日IP为几百,PageView只有几千。并且只有一个网站数据库,39个表,记录数几十万条,占空间175MB。按这个数据,MySQL 不可能占用这么高的资源。
  于是在服务器上运行命令,将 mysql 当前的环境变量输出到文件 output.txt:
d:mysql> mysqld.exe --help >output.txt

发现 tmp_table_size 的值是默认的 32M,于是修改 My.ini, 将 tmp_table_size 赋值到 200M:
d:mysql> notepad c:windowsmy.ini
[mysqld]
tmp_table_size=200M

  然后重启 MySQL 服务。CPU 占用有轻微下降,以前的CPU 占用波形图是 100% 一根直线,现在则在 97%~100%之间起伏。这表明调整 tmp_table_size 参数对 MYSQL 性能提升有改善作用。但问题还没有完全解决。
  于是进入 mysql 的 shell 命令行,调用 show processlist, 查看当前 mysql 使用频繁的 sql 语句:
mysql> show processlist;

反复调用此命令,发现网站网站SQL语句较少在process list中出现:
后来在网上查询资料,很多说是索引问题,后来根据数据的相关建立了多个索引。CPU使用率明显下降,经过几个小时的测试观察,mysal点用CPU100%的问题终于解决了,看来索引是很重要的。

在这里与大家分享一下。

命运天空 2013-02-15 21:17
太好了,在这里找到了解答


查看完整版本: [-- 如何解决MySQL服务器进程CPU占用100%的问题 --] [-- top --]


Powered by phpwind v8.7 Code ©2003-2011 phpwind
Time 0.022040 second(s),query:2 Gzip disabled