運用ノウハウ
Rails勉強会のセッション参加者の中で出た話です。
抜けている部分も多々ありますし、他にも色んな運用があると思うので、コメントいただけると幸いです。
ログローテート
ログローテートはlogrotateで普通に行っている。
HUPシグナルを送る必要がある。
ログはパフォーマンスが落ちるのでFatalだけとる?
アクセス解析は外に出せるならGoogle Analyticsを使うとか
バランシング
高いけどアプライアンスを使う。安心。
+---------+
| Client | 負荷テストツールはここで動かす。
+----+----+
|
+----+----+
| Router |
+----+----+
|
+----+----+
|F5 BIG-IP| Load Barancer
+----+----+
|
+-----+-----+
| |
+--+--+ +--+--+
| App | | App | Web Server
+--+--+ +--+--+
| |
+-----+-----+
|
+--+--+
| D B |
+-----+
負荷テストツール
Apache Bench(ab)とかは単純すぎてダメ。
負荷テストツールを使う場合は、テストマシンをしっかり用意する。
複数台繋いでテストするのが良い。
WebLOAD
オープンソースの負荷テストツール
e-Load
データベース
DBの分散はどうするか?
負荷テストを行うとDBがボトルネックになる。
更新系と参照系で分けて、更新系はマスターに書き込み。参照データはスレーブサーバーに取りにいくようにする。
どちらのサーバーを使うかはApp側の実装となる。
MySQLだとMySQL Proxyを使うと勝手にやってくれる。
PostgreSQLだとpgpoolとかあるけど、2台しか使えない。
商用版だとその辺が解決されている。
設定
MySQLにしてもPostgreSQLにしても初期設定が大人しいので、チューニング必須だよね。
描画ライブラリ
GDChart
凡例が沢山有るようなチャートを出力すると、RubyごとCoreを吐いて落ちる。
Rubyは突然落ちることがある。プロセス監視系を必ず入れる必要がある。
Google Graph APIは日本語を使えない
RubyでCの拡張ライブラリを使う系は怖い。
Cのライブラリを使うものはあまり使わない方が良い。いきなり落ちることがある。
execで叩くのが一番良いかも。
その他の描画ライブラリ
Cairo
RMagick
死活監視
同じマシンでプロセス監視、別マシンで200
時刻合わせ
NTP
便利マシンなどどこかに立てる。
シリアルで同期させる構成とか。USBシリアルだといくらでも増やせるので便利。