主に、klabが提供しているヒットソーシャルアプリ「恋してキャバ譲」を開発、運用する上で得たノウハウの話でした。
システム構成
- フロント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配下に新しいホストを立てて負荷分散する。
- memcacheサーバー
全フロントサーバーからアクセスできるキャッシュサーバー
利用用途:セッション情報の保存する。目的:各フロントサーバーのセッション情報を一元管理する。
利用用途:DBのクエリー情報をキャッシュする。目的:DBの負荷を下げる。
利用用途:snsのプロフィール情報をキャッシュする。目的:外部API接続を行わないようにして、処理を高速化する。
- DBサーバー
ソフトウェア
mysql-5.1系
負荷対策
- my.cnf でスロークエリーを検出して、プログラム修正を行う。
log-queries-not-using-indexes
インデックスを利用しないqueryを検出
slow_query_log
パラメータに閾値を設定して利用(1sec)
スケールアウト
write系のDBは、ハードウェアの性能アップ
read系は、スレーブの数を増やす。
- サーバーの監視
Ganglia
http://ganglia.info/