DBサーバ(MySQL)でスワップを防ぐ方法

Linuxカーネルパラメータのvm.swappinessを0に設定する。

swappinessの値を小さくした場合にはプロセスの利用メモリがファイルシステムキャッシュよりも
優先的にメモリ空間を利用する。
0に設定した場合には実メモリを使い切るまでプロセスのメモリ領域はスワップされなくなる。

swappinessのデフォルト値である60の場合にはファイルシステムキャッシュによってプロセスの
利用領域がスワップ領域に追いやられることがある。例えばOS上で大きめのファイルをコピーするなど。

設定方法は下記で、

/etc/sysctl.confの設定に、下記を追記(もしくは変更)

vm.swappiness=0

下記コマンドで反映させる。(もしくはOS再起動)

sysctl -p


また、ファイルシステムキャッシュとの絡みで、

InnoDBでダイレクトI/Oを設定すると、OSのファイルシステムキャッシュとInnoDBのバッファプール
との重複がなるなるため、メモリ使用効率が高まる。

innodb_flush_method=O_DIRECT