サーバの負荷軽減策

投稿者: | 2007年4月1日

 ここのところ事務所のサーバ群が慢性的に重くなっていたので、いろいろ策を施した。まず、コールドスタンバイ状態だった代替機に火を入れ、中身も外向けのメインサーバのシステムを丸コピーして常時稼働に。

 ここで、せっかく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_fcgidfcgiwrapでFastCGI化したところ、問題なく動いた。mod_deflateと組み合わせても大丈夫。そしてバックエンドに代替機を加え、mod_proxy_balancerで冗長化・ロードバランシング。

 さらに、SpamAssassinもCPUパワーの余っている代替機にやらせる。spamd-iオプションでバインドアドレスを指定し、-AでLAN内からの接続を許可する。spamc-dオプションは複数ホストを書けばフェイルオーバーできる。

 ほかにもちょこちょことTCP/IP関係のパラメータをチューンナップしたら、だいぶ軽くなった。めでたしめでたし。まあ、前が重すぎたんだけどね。

カテゴリー: Tech

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です