pixivのインフラを
 支える技術


       2009/09/25
   ピクシブ株式会社 上薗 竜太
自己紹介
自己紹介

上薗 竜太
 kamipo
ピクシブ株式会社
 2008年11月入社
 インフラの設計・構築・運用管理
アジェンダ

pixivについて
pixivのインフラ
   自作サーバ
   システム構成
運用構築あれこれ
まとめ
pixivについて
pixivについて
pixivについて

イラストコミュニケーションサービス
2007年09月10日 〜 
サービス規模
  125万ユーザ
  8億5000万PV/月
  3000万PV/日
関連サービス
  drawr http://drawr.net/
  drawTwit http://drawtwit.com/
サーバ160台
pixivのインフラ



自作サーバ
自作サーバ
自作サーバ
自作サーバ
自作サーバ
自作サーバ
自作サーバ
pixivのインフラ



システム構成
システム構成

OS
  Linux 2.6 (Debian lenny)
Webサーバ
  apache 2.2.9 (prefork, event)
データベース
  mysql 5.0.67 (tritonn 1.0.12)
アプリケーション
  PHP 5.2.6 (+ APC)
システム構成

ロードバランサ
 mod_proxy_balancer (L7)
 LVS (L4)
キャッシュサーバ
 memcached 1.4.1 (データベース)
 squid 2.7 (画像)
システム構成
システム構成
運用構築あれこれ
apacheのMPM

prefork
   PHPサーバ用
event
   workerの改良版
   proxy、画像サーバ用
KeepAlive

prefork
   KeepAlive Off
event
   KeepAlive On
   MaxKeepAliveRequests 100
   KeepAliveTimeout 2
mysqlの運用

mysqlは自動起動にしない
  ウォームアップ後に本番に投入
  cat *.MY[ID] *.SEN*
とにかくデータをメモリに乗せることが重要
  メモリ増設 4GB -> 8GB
  データベース分割
      現在4つに分割している
  データベース分割が難しいときは参照分割
mysqlの運用
メディック
  復旧専用のスレーブ機
  障害機にスナップショットを転送
netfilter (iptables)

ip_conntrack_maxの値が規定値だと小さい
   ip_conntrack: table full, dropping packet.
   デフォルトだと65536
sysctl -w ¥ net.ipv4.netfilter.
ip_conntrack_max=262144
netfilter (iptables)
noatime/relatime
デフォルト
   常にatimeを更新する
noatime
   常にatimeを更新しない
relatime
   atimeがctimeやmtimeより古いとき更新
noatime/relatime
noatime/relatime
noatime/relatime
運用管理あれこれ

インストール
  PXEブート
  preseed
  setup.sh
Subversion
  configファイルのバージョン管理
  commit時にMLに通知
運用管理あれこれ

アプリケーションのデプロイ
  staging環境から本番環境にrsync
Capistrano
  多数のサーバにコマンド発行できる
  cap invoke COMMAND='cat /proc/loadavg'
まとめ

pixivのインフラについて紹介しました
   セオリー通りでなんとかなります
運用や構築について
   ちょっとしたことが大きく効いてきます
ご清聴 
ありがとうございました
       
       
       

pixivのインフラを支える技術