MySQL innodb缓冲池太大会导致内核交换守护进程(kswapd0)导致高负载吗?

时间:2012-09-23 08:10:20

标签: mysql web-services linux-kernel kernel

分析并避免由内核交换守护程序引起的高负载出现的最佳做法是什么?它是否具有缓冲池大小等MySQL配置的直接影响。?

1 个答案:

答案 0 :(得分:1)

在一个稳定的Linux系统中,交换文件根本就不应该被使用,只要它就会使你的系统慢慢爬行。它存在有三个原因,即过度使用会计(现在不再适用),将未使用的代码段交换到磁盘以为磁盘缓冲区腾出更多空间,并在{}之前耗尽内存时给予更多警告{1}}开始终止您的应用程序。

MySQL出于各种原因绕过了内核的内置磁盘缓冲。启动时,它会分配缓冲池并从磁盘缓存页面。当缓冲池已满时,它将删除一些干净的页面,并写出一些脏页面以腾出更多空间。

如果您将缓冲池设置为大于您可用的RAM量,那么当RAM填满时,内核将开始将页面交换到交换文件。当缓冲池填满时,MySQL将开始将页面交换到数据库文件。这将导致颠簸并且通常性能不佳,因为所有I / O操作都将乘以(至少)三个。

这很可能就是你所看到的,我建议你缩小缓冲池的大小,使其适合你的空闲RAM。