こんにちわ、damayaです。
昨日、大手町で開催された「PHPを使ったソーシャルアプリ開発テクニックと、アクセスに耐えるためのパフォーマンス改善」というセミナーに参加してきました。
主に重要だと感じた部分を列挙いたします。アジェンダは、
「負荷分散設計」
「Webサーバーのスケールアウト手法」
「PHP中間コードキャッシュ」
「データーキャッシュ」
「DBサーバーのスケールアウト手法」
「メッセージキューイング」
「ソーシャルアプリ向け画像生成」
「ソーシャルアプリ向けFlash動的合成」
の8構成です。
「PHP中間コードキャッシュ」
「データーキャッシュ」
「DBサーバーのスケールアウト手法」
「メッセージキューイング」
「ソーシャルアプリ向け画像生成」
「ソーシャルアプリ向けFlash動的合成」
の8構成です。
今年、押さえておきたいPHPの話
〜PHPを使ったソーシャルアプリ開発テクニックと、アクセスに耐えるためのパフォーマンス改善〜
アシアル株式会社 田中正裕さん
▼負荷分散設計
・スケールアップとは、1台のサーバー能力を増やし、パフォーマンスを向上させること
・スケールアウトとは、サーバー台数を増やし、全体のパフォーマンスを向上させること
・スケールアウトのメリットは、「ハードウェアの上限なし」「安価なハードほどコストパフォーマンスが高い」「冗長性」
・スケールアウトのデメリットは、「ネットワーク構成等の複雑化」「プログラムの改修コスト」「サーバー台数増加による管理」
▼Webサーバーのスケールアウト手法
・nginx(エンジンエックス)を導入すると、Apacheのリバースプロキシよりも約3倍パフォーマンスが高い
・nginxはロシア製であり、今月バージョン1.0.0が公開され安定して使用できる
・今後は、nginxが主流となりそう
・NFSを使用する方法もあるが、高負荷に耐えるためにはコストがかかりすぎる
▼PHP中間コードキャッシュ
・Apacheのリスタートでキャッシュがクリアされる為、クリア直後は重くなる
・高アクセス時にファイルの編集を行うと、編集途中のファイルがキャッシュされてしまう場合がある
・APCを使うと平均で2倍〜3倍速くなる
▼データーキャッシュ
・SQLの実行結果や、ページの出力結果をキャッシュする
・memcachedは、CPUの負荷は低いが高メモリ負荷
・memcache互換として、Flare、repcached、Membase、Memcachedb等がある
▼DBサーバーのスケールアウト手法
・レプリケーションが一般的
・マスターDBサーバーのスケールアウトは影響が大きい場合がある
・pgpool-IIやMySQL Proxyなどのプロキシー型システムの場合、アプリの変更は不要になる
▼メッセージキューイング
▼ソーシャルアプリ向け画像生成
・GDが標準だが、標準GDではパフォーマンスがよくないため、各社がKGDなどGDを改良して使用している
・GDの他には、ImageMagickやGMagickという画像合成エンジンがある
・画像の合成は、専用サーバーをたてるのがパフォーマンスへの近道
▼ソーシャルアプリ向けFlash動的合成
・Flash合成ツールとして、Ming、SWFMill、SWF Editor等がある
具体的なライブラリー等の紹介があり、貴重な情報なセミナーでした。