ここのところ事務所のサーバ群が慢性的に重くなっていたので、いろいろ策を施した。まず、コールドスタンバイ状態だった代替機に火を入れ、中身も外向けのメインサーバのシステムを丸コピーして常時稼働に。
ここで、せっかくFreeBSD 6系に上げたので、rpc.lockd(8)
を動かしてNFS上でのファイルロックを有効化。これで、プログラムやデータディレクトリをNFS共有したまま、サービスやジョブを複数台で実行できるようになった。
次に、cronジョブを大幅に減らす。ロードアベレージを上げているのは頻繁なジョブ起動に原因があった。RSS取得、Hotmailからメールを取ってくるGotmail、頻繁なバックアップ、インデクシング、ファイルスキャン、さまざまなホストとの間のRsyncやUnison、CVS/CVSup/Subversion/SVKなどでのソース同期などなど。頻度を実際の利用状況に合わせて落とし、疎遠になったプロジェクトの追っかけをやめ、惰性で続けていたレポジトリミラーリングをやめる。
続いて、高負荷なサービスを落とす。まず、重いものの筆頭はCVSupだが、最近はあまり外からも利用されていなかったので停止した。同時にAnonymous CVSサービスもほとんど利用がないので終了。できればViewVCも重いのでやめたいが、レポジトリへのアクセス手段が何もないのはまずいので残す。あとでmod_python
で動かすようにしないと。
そして、いちばん重かったのがこの日記のシステムであるtDiary。前にmod_fastcgi
でやったときは安定せず失敗したが、今回はApache 2.2でmod_fcgid
とfcgiwrap
でFastCGI化したところ、問題なく動いた。mod_deflate
と組み合わせても大丈夫。そしてバックエンドに代替機を加え、mod_proxy_balancer
で冗長化・ロードバランシング。
さらに、SpamAssassinもCPUパワーの余っている代替機にやらせる。spamd
の-i
オプションでバインドアドレスを指定し、-A
でLAN内からの接続を許可する。spamc
の-d
オプションは複数ホストを書けばフェイルオーバーできる。
ほかにもちょこちょことTCP/IP関係のパラメータをチューンナップしたら、だいぶ軽くなった。めでたしめでたし。まあ、前が重すぎたんだけどね。