2010年8月17日火曜日

klabのソーシャルアプリ勉強会に参加してきた

ちょっと古い話になってしまいましたが、【LAMPで作るソーシャルアプリの負荷対策 ~アプリとインフラの調和のテクニック~】に参加してきたので、内容をまとめてみようと思います。


主に、klabが提供しているヒットソーシャルアプリ「恋してキャバ譲」を開発、運用する上で得たノウハウの話でした。


システム構成

  1. フロントWebサーバー
    ソフトウェア
    - apache-2.2系
    - php-5.2系

    負荷対策
    - 各種データのキャッシュ
       apcを利用しており、さらに、apcの以下の関数で各種変数をキャッシュしている。
    apc_store
    apc_fetch
    apc_delete

    - HTTPの待ち行列を取り除く。
    具体的には……
    mysqlのレプリカにselect文を発行する。
    snsのプロフィールを取得するような外部APIの利用とDB接続を混同しないようにする。

    駄目な例
    1,mysqlへの接続
    2,snsのプロフィール取得
    3,mysqlのクエリーの発行
    4,mysqlの切断

    良い例
    1,mysqlへの接続
    2,mysqlのクエリーの発行
    3,mysqlの切断
    4,snsのプロフィール取得

    - xdebug
    遅い処理を検出する

    スケールアウト
    LVS配下に新しいホストを立てて負荷分散する。

  2. memcacheサーバー
    全フロントサーバーからアクセスできるキャッシュサーバー

    利用用途:
    セッション情報の保存する。
    目的:各フロントサーバーのセッション情報を一元管理する。


    利用用途:DBのクエリー情報をキャッシュする。
    目的:DBの負荷を下げる。

    利用用途:snsのプロフィール情報をキャッシュする。
    目的:外部API接続を行わないようにして、処理を高速化する。

  3. DBサーバー
    ソフトウェア
    mysql-5.1系

    負荷対策
    - my.cnf でスロークエリーを検出して、プログラム修正を行う。
    log-queries-not-using-indexes
    インデックスを利用しないqueryを検出
    slow_query_log
    パラメータに閾値を設定して利用(1sec)

    スケールアウト
    write系のDBは、ハードウェアの性能アップ
    read系は、スレーブの数を増やす。

  4. サーバーの監視
    Ganglia
    http://ganglia.info/





0 件のコメント:

コメントを投稿