我继承了一台运行centos的LAMP服务器,尽管网络流量很低,它还是会随机地挂起。
我已经安装了服务器密度来监视正在发生的事情,并且在挂起过程中发现了以下情况:
在我未受过训练的人看来,mysqld在执行磁盘IO (因为它是VM)时,周期性地对整个服务器进行清除和锁定。
如何更改mysqld配置以防止这种情况发生?
发布于 2011-07-07 11:01:05
mysql“临时磁盘表”的数量从14万降至0。
这些临时表是否由应用程序创建(即“'CREATE临时表.”或者是由数据库创建的(在重新创建索引/排序大型数据集时使用)。
调整配置以允许在内存/更多线程中进行更多排序应该会有所帮助(这取决于在哪个引擎中实现表)。mysqltuner.pl应该提出明智的建议。
但是,您将从调优查询中获得更多的好处。
1)确保您的代码没有在非常大的表上禁用/启用索引(这可以在最初填充表时提高性能,并且可以改善向表添加行的周转--但代价是并发性的损失)。
2)使用这个剧本从慢速查询日志中的查询中剔除文字值,然后根据累积处理时间最长的查询进行排序。
发布于 2011-07-07 16:31:47
运行:mysqladmin -u root -p ext -ri 30 | grep Created_tmp_disk
第一次运行将告诉您自上次重新启动MySQL以来创建了多少磁盘上的临时表。然后它会告诉你在30秒的时间窗口中创建了多少个(直到你控制了它)。
如果值很大,并且不断增大,那么您可以将MySQL的tmpdir放在ramdisk上,以减轻高iowait的影响。
更好的方法是按照symcbean的建议优化查询。查看这里以获得产生临时表的条件。
https://serverfault.com/questions/287859
复制相似问题