DTIの仮想専用サーバServersMan@VPSを借りてみました。

Entryプランはメモリが256MBでまあ足りるだろうと思っていたのですが、ServersMan@VPSではOpenVZという仮想化ソフトウェアを使っていて、なんとスワップの利用が禁止されているのだそうです。つまりなにがなんでも総メモリ使用量を256MB以下に抑える必要があります。ちょっと難しそうです。

とりあえずMySQL 5.1.45をインストールして、すべてデフォルトで起動するとこんな感じです。

# free -m total used free shared buffers cached Mem: 256 23 232 0 0 0 -/+ buffers/cache: 23 232 Swap: 0 0 0 # service mysql start Starting MySQL. SUCCESS! # free -m total used free shared buffers cached Mem: 256 142 113 0 0 0 -/+ buffers/cache: 142 113 Swap: 0 0 0 (# top) PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 11692 mysql 20 0 124m 13m 3216 S 0.0 5.2 0:00.02 mysqld

このように、MySQLにメモリを半分ほど持っていかれてしまいます。これは厳しい。

InnoDB Pluginを有効にすると事態はさらに悪化します。InnoDB Pluginではinnodb_buffer_pool_sizeのデフォルト値が128MBになっているのでそのままでは起動すらできず、設定を絞ってみても…

[mysqld] ignore-builtin-innodb plugin-load = innodb=ha_innodb_plugin.so;innodb_trx=ha_innodb_plugin.so;innodb_l ocks=ha_innodb_plugin.so;innodb_lock_waits=ha_innodb_plugin.so;innodb_cmp=ha_inn odb_plugin.so;innodb_cmp_reset=ha_innodb_plugin.so;innodb_cmpmem=ha_innodb_plugi n.so;innodb_cmpmem_reset=ha_innodb_plugin.so (plugin-loadは実際には1行) innodb_buffer_pool_size = 8M

# free -m total used free shared buffers cached Mem: 256 189 66 0 0 0 -/+ buffers/cache: 189 66 Swap: 0 0 0 (# top) PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 7457 mysql 20 0 172m 20m 3200 S 0.0 8.1 0:00.03 mysqld

と、かなりひどいことになります。これで運用するのはまず無理ですね。

ちなみにInnoDBを無効にするとほぼ問題がなくなります。Virtuozzo/OpenVZ環境ではこの構成で運用しているところが多いようです。

[mysqld] skip-innodb

# free -m total used free shared buffers cached Mem: 256 45 210 0 0 0 -/+ buffers/cache: 45 210 Swap: 0 0 0 (# top) PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 18331 mysql 20 0 28780 4388 2748 S 0.0 1.7 0:00.00 mysqld