ハイパフォーマンスWordPress スライドURL http://goo.gl/rrwrvj プライム ストラテジー 株 式 会 社 代 表 取 締 役 中 村 けん 牛
2 P r i m e S t r a t e g y C o., L t d. W o r d P r e s s F u l l y M a n a g e d S e r v i c e D i v i s i o n 1. 今 日 お 話 しすること
3 WordPressとサーバをチューニングして どこまで 高 速 化 できるのか? をテーマに 高 速 化 の 技 術 と 考 え 方 をお 話 しします
4 まずは 証 拠 をお 見 せします
5 お 手 数 ですが KUSANAGI WordPress と 検 索 して http://kusanagi.tokyo/ にアクセスしてみていただけますか?
6
7 P r i m e S t r a t e g y C o., L t d. W o r d P r e s s F u l l y M a n a g e d S e r v i c e D i v i s i o n 2. 自 己 紹 介
8 中 村 けん 牛 自 己 紹 介 WordPressのフルマネージドサービスを 提 供 するプライム ストラテジー 株 式 会 社 の 代 表 をしています おもに 東 京 とジャカルタで 働 いています t @kengyu_n f Kengyu.Nakamura
9 月 間 1 億 PV 超 のメディアサイトなどの 構 築 サーバ 運 用 マイナビ 様 マイナビウーマン テレビ 朝 日 様 番 組 ブログポータル Adobe Systems 様 事 例 サイト
10 超 高 速 WordPress 仮 想 マシン KUSANAGI の 開 発 WordPress 実 行 時 間 3 ミリ 秒 台 1000 リクエスト/ 秒 をページキャッシュ 非 使 用 で 実 現 する 仮 想 マシン (4vCPU 最 大 性 能 時 )
11 WordPressプラグインの 開 発 Prime Timeline =>ランタイムプロファイラ 001 Prime Strategy Translate Accelerator => 翻 訳 アクセラレータ
12 WordPress 関 連 書 籍 の 執 筆 など 詳 解 WordPress WordPressによるWebアプリケーション 開 発 ( 出 版 社 : 株 式 会 社 オライリー ジャパン) WordPressの 教 科 書 シリーズ ( 出 版 社 :SBクリエイティブ 株 式 会 社 他 )
13 P r i m e S t r a t e g y C o., L t d. W o r d P r e s s F u l l y M a n a g e d S e r v i c e D i v i s i o n 3.WordPressの 高 速 化
14 なぜWordPressの 高 速 化 が 必 要 とされるのか? 1.WordPressはPHP+MySQLの 動 的 なシステム => 静 的 なHTMLページに 比 べて 動 作 速 度 の 点 で 不 利
15 なぜWordPressの 高 速 化 が 必 要 とされるのか? 2.CPUの 開 発 ロードマップは 動 作 クロック( 周 波 数 )よ りもコア 数 重 視 の 流 れ => ハードの 進 化 による 処 理 速 度 向 上 を 期 待 しづらい
16 なぜWordPressの 高 速 化 が 必 要 とされるのか? 3.このような 背 景 の 中 でオウンドメディアやサービス サイトでは (1)PV 獲 得 の 機 会 を 失 わないという 観 点 (2)ユーザーエクスペリエンス 向 上 の 観 点 (3) 検 索 エンジン 最 適 化 の 観 点 (4)Webサイトの 信 頼 性 安 定 性 の 観 点
17 WordPressの 高 速 化 とは? 1.サーバサイドでの 高 速 化 <= 本 日 のテーマ (サーバ WordPress) 2.フロントエンドの 高 速 化 (HTML CSS JavaScript)
18 サーバサイドの 高 速 化 とは? HTMLページのロード 時 間 を 短 くして
19 サーバサイドの 高 速 化 とは? HTMLページのロード 時 間 を 短 くして 1 秒 あたりのリクエスト 数 を 増 やすこと
20 WordPressの 高 速 化 HTMLページのロード 時 間 を 短 くする=1+2+3を 短 縮 する 1HTTPリクエスト 送 信 ブラウザ サーバ(WordPress) 2 実 行 3HTTPレスポンス 受 信
21 WordPressの 高 速 化 HTMLページのロード 時 間 をFirebugのネットタブで 確 認 する ページのロード 時 間
22 WordPressの 高 速 化 1 秒 あたりのアクセス 数 を 増 やすとは? ココ
23 WordPressの 高 速 化 ページのロード 時 間 と1 秒 あたりのリクエスト 数 の 関 係 クイズ1( 注 : 通 信 時 間 など 無 視 しておおざっぱに 考 えます) 1vCPU(1コア)でページのロード 時 間 が500ms だった 場 合 1 秒 あたりのリクエスト 数 はいくつになりますか?
24 WordPressの 高 速 化 ページのロード 時 間 と1 秒 あたりのリクエスト 数 の 関 係 クイズ2 ( 注 : 通 信 時 間 など 無 視 しておおざっぱに 考 えます) 1vCPU(1コア)でページのロード 時 間 を100msにチューニ ングできた 場 合 1 秒 あたりのリクエスト 数 はいくつになりますか?
25 WordPressの 高 速 化 ページのロード 時 間 と1 秒 あたりのリクエスト 数 の 関 係 クイズ3 ( 注 : 通 信 時 間 など 無 視 しておおざっぱに 考 えます) 1vCPU(1コア)でページのロード 時 間 が100msの 場 合 2vCPU(2コア)にスケールアップすると 1 秒 あたりのリクエスト 数 はいくつになりますか?
26 WordPressの 高 速 化 ページのロード 時 間 と1 秒 あたりのリクエスト 数 の 関 係 クイズ4 ( 注 : 通 信 時 間 など 無 視 しておおざっぱに 考 えます) 2vCPU(2コア)でページのロード 時 間 が100msの 場 合 4vCPU(4コア)にスケールアップするとページのロード 時 間 はいくつになりますか?
27 WordPressの 高 速 化 HTMLページのロード 時 間 を 分 解 すると 翻 訳 処 理 MySQLの 実 行 PHPの 実 行 通 信 時 間 3レスポンス 受 信 通 信 時 間 2 実 行 1リクエスト 送 信 ブラウザ サーバ(WordPress) ブラウザ
P r i m e S t r a t e g y C o., L t d. W o r d P r e s s F u l l y M a n a g e d S e r v i c e D i v i s i o n 4.ページキャッシュを 使 わずに WordPressを 高 速 化 する 28
29 WordPressを 高 速 化 する あるサーバを 利 用 してデフォルトの 状 態 だと WordPress 1.ロード 時 間 2.リクエスト 数 246ms 4.9リクエスト/ 秒
30 WordPressを 高 速 化 する ページキャッシュを 使 わないでどこまでいけるか WordPress APC(PHPアクセラレー タ) 導 入 で 約 1.85 倍 246ms 133ms
31 WordPressを 高 速 化 する PHP 実 行 の 仕 組 み PHPのソースコード
32 WordPressを 高 速 化 する PHP 実 行 の 仕 組 み 中 間 コード これを Zend Engine (VM)が 実 行
33 WordPressを 高 速 化 する ページキャッシュを 使 わないでどこまでいけるか WordPress APC(PHPアクセラレー タ) 導 入 で 約 1.85 倍 246ms 133ms けっこう 簡 単 に 導 入 できます たとえば Centos 6の 場 合 最 短 rootで 次 のコマンドを 打 つだけ yum install -y php-pecl-apc; service httpd restart;
34 WordPressを 高 速 化 する ページキャッシュを 使 わないでどこまでいけるか WordPress APC(PHPアクセラレー タ) 導 入 で 約 1.85 倍 246ms 133ms PHP5.4まではAPC APC=PHPアクレラレータ+ ユーザーキャッシュ PHP5.5からはOPcache(+20%) ユーザーキャッシュはAPCu 拡 張 PHP5.3 5.4はOPcacheとAPCuをPHP 拡 張 として 利 用 可 能
35 WordPressを 高 速 化 する ページキャッシュを 使 わないでどこまでいけるか WordPress APC(PHPアクセラレー タ) 導 入 で 約 1.85 倍 246ms 133ms MySQLのクエリキャッ シュ 導 入 で 約 1.15 倍 133ms 115ms
36 WordPressを 高 速 化 する ページキャッシュを 使 わないでどこまでいけるか WordPress APC(PHPアクセラレー タ) 導 入 で 約 1.85 倍 246ms 133ms 簡 単 に 導 入 できます たとえば my.cnfのmysqldセクション に 次 の1 行 を 追 加 してMySQLサーバを restartすればok query_cache_size = 64M MySQLのクエリキャッ シュ 導 入 で 約 1.15 倍 133ms 115ms
37 WordPressを 高 速 化 する ページキャッシュを 使 わないでどこまでいけるか WordPress APC(PHPアクセラレー タ) 導 入 で 約 1.85 倍 246ms 133ms MySQLのクエリキャッ シュ 導 入 で 約 1.15 倍 133ms 115ms 翻 訳 キャッシュ(001 Prime Strategy Translate Accelarator) 導 入 で 約 1.6 倍 115ms 72ms
38 WordPressを 高 速 化 する ページキャッシュを 使 わないでどこまでいけるか WordPress APC(PHPアクセラレー タ) 導 入 で 約 1.85 倍 246ms 133ms MySQLのクエリキャッ シュ 導 入 で 約 1.15 倍 133ms 115ms WordPressのプラグインなの で 簡 単 に 導 入 できます 翻 訳 キャッシュ(001 Prime Strategy Translate Accelarator) 導 入 で 約 1.6 倍 115ms 72ms
39 WordPressを 高 速 化 する ページキャッシュを 使 わないでどこまでいけるか WordPress APC(PHPアクセラレー タ) 導 入 で 約 1.85 倍 246ms 133ms MySQLのクエリキャッ シュ 導 入 で 約 1.15 倍 133ms 115ms Apache(mod_php)から Nginx+HHVM 構 成 に 変 更 で 約 2.2 倍 72ms 33ms 翻 訳 キャッシュ(001 Prime Strategy Translate Accelarator) 導 入 で 約 1.6 倍 115ms 72ms
40 WordPressを 高 速 化 する HHVM 実 行 の 仕 組 み PHPのソースコード
41 WordPressを 高 速 化 する HHVM 実 行 の 仕 組 み 中 間 コード これを HHVMが 実 行
42 WordPressを 高 速 化 する HHVM 実 行 の 仕 組 み 何 度 も 利 用 される 部 分 をJITでコンパイル してネイティブコー ドへ ネイティブコードを CPUが 実 行
43 WordPressを 高 速 化 する ページキャッシュを 使 わないでどこまでいけるか ページ 圧 縮 (gzip) 導 入 で 約 1.1 倍 33ms 30ms WordPress APC(PHPアクセラレー タ) 導 入 で 約 1.85 倍 246ms 133ms MySQLのクエリキャッ シュ 導 入 で 約 1.15 倍 133ms 115ms Apache(mod_php)から Nginx+HHVM 構 成 に 変 更 で 約 2.2 倍 72ms 33ms 翻 訳 キャッシュ(001 Prime Strategy Translate Accelarator) 導 入 で 約 1.6 倍 115ms 72ms
44 WordPressを 高 速 化 する ページキャッシュを 使 わないでどこまでいけるか 1.ロード 時 間 2.リクエスト 数 246ms 4.9リクエスト/ 秒 ロード 時 間 リクエスト 数 約 8 倍 約 11.6 倍 に 向 上 1.ロード 時 間 30ms 2.リクエスト 数 56.8リクエスト/ 秒
45 WordPressを 高 速 化 する ページキャッシュを 使 わないでどこまでいけるか 1.ロード 時 間 30ms 2.リクエスト 数 56.8リクエスト/ 秒 このサーバのCPUの 周 波 数 とコア 数 を 変 更 すると どのような 影 響 があるのか?
46 P r i m e S t r a t e g y C o., L t d. W o r d P r e s s F u l l y M a n a g e d S e r v i c e D i v i s i o n 5.(おまけ)ページキャッシュとトランジェント
ページキャッシュを 導 入 する ( WP SiteManager WP Super Cache Nginx Varnishなど) 47
48 ページキャッシュを 導 入 する WP SiteManagerの 場 合 1.ロード 時 間 2.リクエスト 数 246ms 4.9リクエスト/ 秒 ロード 時 間 リクエスト 数 約 16.4 倍 約 53.1 倍 に 向 上 1.ロード 時 間 15ms 2.リクエスト 数 260リクエスト/ 秒
49 トランジェントを 導 入 する トランジェントとは? WordPerss 内 部 の 値 を 一 時 的 にDB(wp_optionsテ ーブル)に 保 存 して 異 な るプロセスで 再 利 用 する ためのWordPressの 機 能 => 部 分 キャッシュとして 利 用 可 能
50 トランジェントを 導 入 する トランジェントの 具 体 例 (footer.php) <?php <a href="<?php echo esc_url( ( if (! $footer_cache = get_transient( 'http://wordpress.org/', 'twentyfourteen' ) ); 'footer_cache' ) ) {?>"><?php printf( ( 'Proudly powered by ob_start(); %s', 'twentyfourteen' ), 'WordPress' );?></a>?> </div><!--.site-info --> <footer id="colophon" class="site-footer" </footer><!-- #colophon --> role="contentinfo"> <?php <?php get_sidebar( 'footer' );?> $footer_cache = ob_get_clean(); <div class="site-info"> set_transient( 'footer_cache', <?php do_action( $footer_cache, 60 * 5 ); 'twentyfourteen_credits' );?> } echo $footer_cache;?>
ということで 51
52 ぜひ 実 践 して 快 適 なWordPressライフをお 過 ごしください!
ご 清 聴 ありがとうございました 53