论坛风格切换切换到宽版
  • 3948阅读
  • 1回复

如何解决MySQL服务器进程CPU占用100%的问题 [复制链接]

上一主题 下一主题
离线yycadmin
 

发帖
1995
铜币
22151
威望
509
只看楼主 倒序阅读 使用道具 楼主  发表于: 2013-01-12

  最近为公司一台服务器解决了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%的问题终于解决了,看来索引是很重要的。

在这里与大家分享一下。
离线命运天空

发帖
2377
铜币
26143
威望
568
只看该作者 沙发  发表于: 2013-02-15
太好了,在这里找到了解答
快速回复
限100 字节
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
 
上一个 下一个