理想未来ってなんやねん

娘可愛い。お父さん頑張る。

運用ノウハウ

Rails勉強会のセッション参加者の中で出た話です。
抜けている部分も多々ありますし、他にも色んな運用があると思うので、コメントいただけると幸いです。

ログローテート

ログローテートはlogrotateで普通に行っている。
HUPシグナルを送る必要がある。

ログはパフォーマンスが落ちるのでFatalだけとる?
アクセス解析は外に出せるならGoogle Analyticsを使うとか

Webサーバー

Rubyで使うのはMongrel
FastCGIは高負荷時に不安定。
Thinとかあるけど、実績が不明なので怖くて使えない。

バランシング

高いけどアプライアンスを使う。安心。


+---------+
| Client | 負荷テストツールはここで動かす。
+----+----+
|
+----+----+
| Router |
+----+----+
|
+----+----+
|F5 BIG-IP| Load Barancer
+----+----+
|
+-----+-----+
| |
+--+--+ +--+--+
| App | | App | Web Server
+--+--+ +--+--+
| |
+-----+-----+
|
+--+--+
| D B |
+-----+

負荷テストツール

Apache Bench(ab)とかは単純すぎてダメ。
負荷テストツールを使う場合は、テストマシンをしっかり用意する。
複数台繋いでテストするのが良い。

WebLOAD

オープンソースの負荷テストツール

e-Load

データベース

DBは何を使うか

Oracle
MySQL
PostgreSQL

Oracleは何でも出来るが、インストールが面倒
スケーラビリティもあるけど、費用はそれなりに掛かる

DBの分散はどうするか?

負荷テストを行うとDBがボトルネックになる。
更新系と参照系で分けて、更新系はマスターに書き込み。参照データはスレーブサーバーに取りにいくようにする。

どちらのサーバーを使うかはApp側の実装となる。
MySQLだとMySQL Proxyを使うと勝手にやってくれる。
PostgreSQLだとpgpoolとかあるけど、2台しか使えない。
商用版だとその辺が解決されている。

設定

MySQLにしてもPostgreSQLにしても初期設定が大人しいので、チューニング必須だよね。

描画ライブラリ

GDChart

凡例が沢山有るようなチャートを出力すると、RubyごとCoreを吐いて落ちる。
Rubyは突然落ちることがある。プロセス監視系を必ず入れる必要がある。
Google Graph APIは日本語を使えない
RubyでCの拡張ライブラリを使う系は怖い。
Cのライブラリを使うものはあまり使わない方が良い。いきなり落ちることがある。
execで叩くのが一番良いかも。

その他の描画ライブラリ

Cairo
RMagick

監視ツール

God

Rubyで書かれた監視ツール
Gemでインストールできる。

FiveRuns

1サーバー月$40
結構情報を取れる

JP1

日立の製品
総合システム運用管理

SNMP

LANとかルータ監視によく使う。
トラフィックを見れたりするので、どこで問題になっているかがわかる。

死活監視

同じマシンでプロセス監視、別マシンで200

時刻合わせ

NTP
便利マシンなどどこかに立てる。
シリアルで同期させる構成とか。USBシリアルだといくらでも増やせるので便利。