[メモ]Web開発者のための大規模サービス技術入門の覚書


Web開発者のための大規模サービス技術入門を読んだ覚書。

  • OSSでできる冗長化。

    • LVSとkeep alive。
  • 負荷の確認。

    • まずはロードアベレージの確認。
    • 問題ない場合は、ソフトウェアの設定、不具合、ネットワーク、リモートホストを疑う。
    • CPU起因、I/O起因か確認する。
    • CPUに負荷がかかっているのはディスク、メモリーがボトルネックになっていないあるいみ理想的状態。
    • またはプログラムの暴走。
  • OSの仮想メモリ機構。

    • ページごとにプロセスへ渡す。
    • ページキャッシュ。
    • OSは動かし続けた方がはやくなる。
    • メモリーが足りなくなった場合はLRUなのでDBも動かし続ければ負荷が減る。
    • DBサーバーをそのままスケールアウトしても、メモリにデータのらないので遅いまま効果あまりない。
    • メモリーを増やすか、データを分割してスケールアウトする。
    • データ量が物理メモリより小さくなるように。
    • メンテなどで再起動した場合、キャッシュなっていないので大量のI/Oが発生する。
  • アクセスの種類で割り振るDBを変えることでキャッシュに乗りやすくする。

    • テーブルごとに分割。
    • ユーザーごとに分割。
    • ユーザー、クローラーで分割。
    • テーブル分割するとjoin出来なくなる。
  • 圧縮。

    • バイナリ符号Visual Basic符号。
    • 符号化の方法でもデータ量を減らせる。
    • 数値を前の数値との差分で持つ。