echo 1 > /proc/sys/vm/drop_cachesがすごい件
MySQL+MyISAMを使っていて不思議だなーと思ったのが
MySQLをSTOPさせてもメモリのFreeがほとんど戻らないということ
たとえば、MySQLが起動していてそこそこ動かしていると
メモリーのFreeはほとんどない状態になって
ある意味、いい感じでうごいているわけですが
# free total used free shared buffers cached Mem: 16432240 16331988 100252 0 11268 16030644 -/+ buffers/cache: 290076 16142164 Swap: 2031608 119248 1912360
この状態でMySQLを止めてもFreeが戻らないことがままあります
# /etc/init.d/mysql stop Shutting down MySQL... [ OK ] # free total used free shared buffers cached Mem: 16432240 16220336 211904 0 11424 16033120 -/+ buffers/cache: 175792 16256448 Swap: 2031608 71752 1959856
どうもテーブルをページキャッシュに乗ってしまっているためのようでして
せっかくMySQL stopしたならメモリもきれいになっていてもらいたいところ・・
そこで
echo 1 > /proc/sys/vm/drop_caches
を使うといいです。
# echo 1 > /proc/sys/vm/drop_caches # free total used free shared buffers cached Mem: 16432240 107460 16324780 0 596 9596 -/+ buffers/cache: 97268 16334972 Swap: 2031608 71744 1959864
思いっきりメモリが戻りました〜
ってことで、MySQLを止めるときはここ最近はこんな感じで止めてたりします。
/etc/init.d/mysql stop;sync;sync;echo 1 > /proc/sys/vm/drop_caches;/etc/init.d/mysql start
syncはもう昔のクセみたいなおまじないみたいなもんですねwww
参考にさせていただいたページ:
http://lab.tricorn.co.jp/okt/204
(目からうろこでした!ありがとうございます!)