PHPーNinjaの裏側
WordPress高速化のテクニック

  PHPカンファレンス関西 2012
      2012年5月12日
         宮内 隆行
自己紹介
株式会社デジタルキューブで
バックエンドエンジニアやってます。
ninjax.cc
Nginxのエンタープライズサポートを
      行なっています。
WP Total Hacksなどの
WordPressプラグインを作ってます。
✓ twitter

 @miya0001
✓ ブログ

 http://firegoby.jp/
今日のおしながき
✓ PHP-Ninjaとは?

✓ Nginxのご紹介

✓ Nginx導入の際の勘所。

✓ その他のオトクな情報♥
php-ninja.com
PHP-Ninjaって?
✓ ファーストサーバーのクラウド基盤 Z-
  Cloudを利用したWordPressのPaaS
  サービス。

✓ ファーストサーバーとデジタルキューブの
  技術陣が結集して、超高速な
  WordPress環境を提供。

✓ 月間300万PVを想定!
どれぐらい速い?
レンタルサーバー     20リクエスト/秒ぐらい

チューニング済みの
             100リクエスト/秒ぐらい
  LAMP環境

 PHP-Ninja    5,000∼8,000/秒
10,000リクエストを
7,078リクエスト/秒で処理
なぜ速い?
Z-Cloudが速い
✓ クラウド基盤の開発元は、
  あのNode.jsのjoyent社。

✓ インフラが国内。

✓ 技術に定評があるファーストサー
  バーが提供
ファイルシステムが速い

✓ OSのファイルシステムに

 ZFSを採用。
✓ ディスクのI/Oが超高速。
CPUバーストがすげー

✓ 高負荷時にCPUのコアをダイナミックに増
  減します。

✓ 完全な

 オートスケール。
WEBサーバーに
Nginxを採用!
Nginxってなによ?
ロシアで開発された
高速で軽量なWEBサーバー
名だたるIT企業が続々と採用
Nginxの特徴
C10K問題
(クライアント1万問題)
  ご存知ですか?
✓あまりにもクライアント数が増え
るとハードウエアの性能に関係な
く、サーバーがパンクする。
‣ プロセスIDが枯渇しちゃう。
NginxはC10Kに対応するた
     めに開発されました。
         従来のWebサーバでは同時接続数が増えると、プロセス
         数やスレッド数が増えて、メモリを食いつぶしたり、コ
         ンテキストスイッチのオーバーヘッドが大きくなること
         により本来の処理に時間が割けなくなったりします。
         nginxではマルチスレッドを使わずに、イベント駆動の
         アーキテクチャを採用することにより、このC10K問題
         に対応するような仕組みを設けております。このため、
         メモリの使用量も抑えることができ、メモリが少ない
         サーバでもそれなりに快適に動作します。


出展:
http://heartbeats.jp/hbblog/2012/01/nginx01.html
メモリ消費を予測しやすい
メモリ使用量




         それ以外
                イベントドリブンのWEB
                サーバー(Nginxなど)


            同時接続数
驚くほど優秀なリバースプロキシ
PHP-NInjaでは、
これらの技術を採用することで
超高速なWordPress環境を
    実現しました。
しかしWEBアプリケーションで
   リバースプロキシを
導入するにはコツも必要です。
動的サイトを静的にキャッシュ
 しちゃうがゆえの悩みがっ!
WordPressではコメント投稿者の情
 報をCookieを使って保存して、次回以
  降も再利用できるようにしています。




リバースプロキシはこれもキャッシュします。
php-ninjaではAjax化することで、
   この問題を解決しています。
コメントが投稿されても
   反映されないじゃん!




     そりゃそうです。
静的にキャッシュされてますので。。。
コメント投稿時にキャッシュをクリア
 するプラグインをご用意しました。
予約投稿が公開されない...。




  静的にキャッシュされてますので、
そもそもPHPにリクエストが来ない。。。
予約投稿があるときは
Ajaxでバックエンドにリクエストを
     送るようにしました。
つまり、動的に変更したい部分は、
Ajaxを駆使する必要があります。
あと、キャッシュしてほしくないペー
ジは、header()でキャッシュしない
ようにレスポンスヘッダを送ってしま
       いましょう。
というわけで
今日のまとめ
PHP-Ninjaは
笑けるほど速い!
CPUバーストで完全なオート
スケールを実現してるんだよ!
NginxはC10Kに対応して
     るんだぜ!
Nginxをリバースプロキシ
として導入すると超高速化す
      るよ!
静的にキャッシュしちゃうの
でいろいろとノウハウが必要
     だよ!
ただいまから
耳寄り情報のお時間
複数のWordPressを一元管理




http://wp.remotemanager.me/
PHP-Ninjaに手が出ない...orz
貧乏なあなたへ!
サーバーを移行することなく、
一瞬にしてWordPressが高速化する
 魔法のようなサービスを始めます。
ありがとうございました。

PHP-Ninjaの裏側