操作系统级别和 MySQL

操作系统级别和 MySQL

我刚刚读到,innodb_buffer_pool_size 的错误配置会导致操作系统级别的分页。有人知道这种情况是怎么发生的,以及如何防止这种情况发生吗?目前我使用的是 CentOS 4 和 MySQL 5.0.41

答案1

地方memlock 选项在 my.cnf 中。在 CentOS5 中,SELinux 阻止将 mysqld 进程锁定在内存中,因此我必须创建自己的模块才能启用此功能。

另一种可能性是使用大页面,它始终驻留在内存中。您必须记住将ulimit -l unlimitedmysqld 启动脚本

答案2

简单来说,为了避免分页,您需要将缓冲区大小保持足够小,以便它能够完全放入内存中,以及操作系统使用内存的其他所有东西。如果总内存需求大于物理内存,则会进行交换。如果您没有交换空间,则必须出现问题。

答案3

如果您的机器启用了交换,并且缓冲池比物理 RAM 大,那么它将导致内容交换到磁盘以释放缓冲池的 RAM。通过禁用交换或确保 mysql 永远不会消耗足够的物理 RAM 来防止这种情况。

相关内容