我被困在解决 MySQL 问题的过程中。每小时有几次,大约 60 秒,MyuSQL 会变得无响应,导致我们的网站在此期间无法访问。我启用了慢查询日志,没有发现任何问题(停机期间的所有查询都非常慢,这是自然的,但似乎没有一个查询导致了这个问题)。
我禁用了所有的 cron 作业,但问题仍然存在。
我在中断期间运行了 top,但 MySQL 几乎没有运行 - 这让我觉得这不是一个负载/坏查询问题。
顶部截图在这里: 我的 vps 上的一些统计数据:
1.8GB RAM,2.2Ghz 处理器。mysql 5.1.56。我的网站运行速度极快,除了锁定期间。平均 CPU 使用率为 40%。
这是我的 my.cnf:
[mysqld]
安全显示数据库 tmp_table_size = 24M
最大堆表大小 = 32M
查询缓存限制=1M
查询缓存大小=70M
查询缓存类型=1
最大连接数=200
collation_server=utf8_unicode_ci character_set_server=utf8
延迟插入超时=40
交互超时=10
等待超时=400
连接超时=20
线程缓存大小=64
密钥缓冲区=50M
连接缓冲区=1M
最大连接错误=20
最大允许数据包=8M
表缓存=1024
记录缓冲区=1M
排序缓冲区大小=2M
读取缓冲区大小=2M
读取缓冲区大小=1M
线程并发=2
myisam_sort_buffer_size=32M
innodb_buffer_pool_size=200M
非常感谢有关如何追踪此问题的任何建议。
答案1
如果你在中断期间可以登录 mysql 控制台,请尝试运行
SHOW PROCESSLIST;
这应该会列出正在运行的 mysql 线程以及这些线程正在运行的查询。这应该会让您更了解 MySQL 正在做什么,导致它没有响应。
答案2
托管公司将其归结为 apache 错误配置,他们增加了 apache 的内存限制,问题现已解决。
答案3
在中央管理/监控服务器上安装 Cacti。然后安装 mysql-cacti 模板。
我会设置系统特定监控以及所有 mysql 监控。这应该会为您提供诊断所需的大部分数据。
模板网站上还有详细的文档。