在我的服务器(ubuntu12.04)上,mysqld开始显示一些奇怪的CPU峰值。我记录了其中的一些作为样本:
在三重破折号“--”之后的值是由top报告的cpu使用率(后面是mem使用量)。例如,在21:31:33和21:37:33 (178%!)和21:40:25。在这种情况下,客户端在到达服务器时遇到了困难。
你知道是什么引起的吗?
我做了几件事
重新启动整个服务器:之后是相同的事情
打开普通日志,实时查看查询:我估计了cpu出现高峰时的查询量,以及未启动时的查询量。但是,当游客不多时,高峰之间的间隔似乎更长(不能100%肯定这一点,但在快速回顾之后似乎是如此)。
-------- Performance Metrics -------------------------------------------------
[--] Up for: 1h 5m 28s (50K q [12.899 qps], 25K conn, TX: 22M, RX: 6M)
[--] Reads / Writes: 98% / 2%
[--] Total buffers: 208.0M global + 2.7M per thread (400 max threads)
[OK] Maximum possible memory usage: 1.3G (64% of installed RAM)
[OK] Slow queries: 0% (0/50K)
[OK] Highest usage of available connections: 9% (37/400)
[OK] Key buffer size / total MyISAM indexes: 16.0M/100.0K
[OK] Query cache efficiency: 94.0% (23K cached / 25K selects)
[OK] Query cache prunes per day: 0
[OK] Sorts requiring temporary tables: 0% (0 temp sorts / 1K sorts)
[OK] Temporary tables created on disk: 19% (54 on disk / 272 total)
[OK] Thread cache hit rate: 99% (37 created / 25K connections)
[OK] Table cache hit rate: 36% (77 open / 213 opened)
[OK] Open file limit used: 1% (50/4K)
[OK] Table locks acquired immediately: 100% (1K immediate / 1K locks)
[OK] InnoDB data size / buffer pool: 27.0M/128.0M请注意,它在mysql重新启动后运行了很短的时间,但我之前运行了它,并显示了相同的内容。
检查的IO问题:非常低的cpu峰值期间和之间的尖峰。
选中的完整处理程序列表:大部分为空,在cpu峰值期间和之间都是空的。
我的mysql配置文件:http://pastebin.com/k5qpVVLR
其他服务器软件:该站点运行Apache & PHP。这些进程和其他进程在mysql cpu峰值期间没有什么不同。我已经检查了相关的php代码,而且连接似乎处理得很好。来自我的php.ini的相关内容(也尝试了持续的打开和关闭):
pdo_mysql.cache_size = 2000
mysql.cache_size = 2000
mysql.max_links = -1我读到了关于优化表的文章,但是一般的想法似乎是,innodb不需要它,我的表也没有那么大(~30K行)。
我迷路了,我希望你能给我指点。我希望你们中的一些人有过类似的经历。
非常感谢。
发布于 2014-09-11 03:14:03
是什么让你觉得这些尖峰很奇怪?它可能只是mysql通过类似于普通的查询工作。您需要做的是分析哪些查询所花费的时间最长,并将其与cpu增加的时间联系起来。您应该首先打开缓慢的查询日志,并查看花费时间最长的查询。一旦追踪到这些数据,您就可以开始考虑如何使这些程序更有效地运行。
https://serverfault.com/questions/627718
复制相似问题