![MySQL 卡住,占用大量磁盘 i/o](https://linux22.com/image/508128/MySQL%20%E5%8D%A1%E4%BD%8F%EF%BC%8C%E5%8D%A0%E7%94%A8%E5%A4%A7%E9%87%8F%E7%A3%81%E7%9B%98%20i%2Fo.png)
在 Solaris 上使用 mySQL 5.0.51。
间歇性地,MySQL 似乎“卡住了”。服务器上的磁盘使用率因读取而飙升至 98%。我使用 dtrace(特别是 DTrace 工具包 - iosnoop)来追踪哪些进程正在使用所有读取。Mysql 每秒调用 tablename.TDM 数百次。Web 服务器上的负载不超过平均水平,这可以解释这一点。没有运行 cronjobs,也没有其他实用程序(如 mysqldump 或任何其他实用程序)。这是一个主/从复制设置。
作为临时修复,我将 mysql 表从“tablename”更改为“tablename2”,然后改回“tablename”
这暂时修复了问题,并“解除”了 mysql 的困扰。磁盘使用率回落,dtrace 不再显示每秒对“tablename.TDM”的数百次读取。
我有几个想法:
1. MySQL version bug
2. Infinite loop somewhere in my application (which i'm not sure how likely this is)
3. ??
有人曾经见过这个或者有任何见解吗?
谢谢
答案1
呃,随机重命名表格是一个糟糕的想法。
查看 MySQL 进程列表,确定哪些进程正在加载系统。使用:
show full processlist;
还有像mytop
和mtop
这样方便的实用程序。
编辑1
隔离将取决于您的环境。连接来自哪里?
如果是本地主机,它只能是一个系统脚本还是您有一个从数据库提供服务的应用程序?
如果是远程主机,该远程主机提供什么功能?它与其他主机有什么不同?它有脚本吗,还是只是一个应用程序?
隔离来源应该相当快速和简单,但不一定能隔离原因。