ハイパフォーマンスWordPress...HTMLページのロード時間をFirebugのネットタブで確認する...

53
ハイパフォーマンスWordPress スライドURL http://goo.gl/rRwrvj プライム・ストラテジー株式会社 代表取締役 中村 けん牛

Transcript of ハイパフォーマンスWordPress...HTMLページのロード時間をFirebugのネットタブで確認する...

Page 1: ハイパフォーマンスWordPress...HTMLページのロード時間をFirebugのネットタブで確認する ページのロード時間 WordPressの高速化 22 1秒あたりのアクセス数を増やすとは?ココ

ハイパフォーマンスWordPress

スライドURL http://goo.gl/rRwrvj

プライム・ストラテジー株式会社

代表取締役 中村けん牛

Page 2: ハイパフォーマンスWordPress...HTMLページのロード時間をFirebugのネットタブで確認する ページのロード時間 WordPressの高速化 22 1秒あたりのアクセス数を増やすとは?ココ

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.今日お話しすること

2

Page 3: ハイパフォーマンスWordPress...HTMLページのロード時間をFirebugのネットタブで確認する ページのロード時間 WordPressの高速化 22 1秒あたりのアクセス数を増やすとは?ココ

「WordPressとサーバをチューニングして

どこまで高速化できるのか?」

をテーマに高速化の技術と考え方をお話しします。

3

Page 4: ハイパフォーマンスWordPress...HTMLページのロード時間をFirebugのネットタブで確認する ページのロード時間 WordPressの高速化 22 1秒あたりのアクセス数を増やすとは?ココ

「まずは証拠」

をお見せします。

4

Page 5: ハイパフォーマンスWordPress...HTMLページのロード時間をFirebugのネットタブで確認する ページのロード時間 WordPressの高速化 22 1秒あたりのアクセス数を増やすとは?ココ

お手数ですが、

「KUSANAGI WordPress」と検索して

http://kusanagi.tokyo/

にアクセスしてみていただけますか?

5

Page 6: ハイパフォーマンスWordPress...HTMLページのロード時間をFirebugのネットタブで確認する ページのロード時間 WordPressの高速化 22 1秒あたりのアクセス数を増やすとは?ココ

6

Page 7: ハイパフォーマンスWordPress...HTMLページのロード時間をFirebugのネットタブで確認する ページのロード時間 WordPressの高速化 22 1秒あたりのアクセス数を増やすとは?ココ

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

7

2.自己紹介

Page 8: ハイパフォーマンスWordPress...HTMLページのロード時間をFirebugのネットタブで確認する ページのロード時間 WordPressの高速化 22 1秒あたりのアクセス数を増やすとは?ココ

中村 けん牛 自己紹介

8

WordPressのフルマネージドサービスを

提供するプライム・ストラテジー株式会社

の代表をしています。

おもに東京とジャカルタで働いています。

t @kengyu_n f Kengyu.Nakamura

Page 9: ハイパフォーマンスWordPress...HTMLページのロード時間をFirebugのネットタブで確認する ページのロード時間 WordPressの高速化 22 1秒あたりのアクセス数を増やすとは?ココ

月間1億PV超のメディアサイトなどの構築、サーバ運用

9

テレビ朝日 様番組ブログポータル

マイナビ 様「マイナビウーマン」

Adobe Systems 様事例サイト

Page 10: ハイパフォーマンスWordPress...HTMLページのロード時間をFirebugのネットタブで確認する ページのロード時間 WordPressの高速化 22 1秒あたりのアクセス数を増やすとは?ココ

超高速WordPress仮想マシン「KUSANAGI」の開発

10

・WordPress 実行時間3 ミリ秒

・1000 リクエスト/秒

をページキャッシュ非使用で実

現する仮想マシン

(4vCPU、最大性能時)

Page 11: ハイパフォーマンスWordPress...HTMLページのロード時間をFirebugのネットタブで確認する ページのロード時間 WordPressの高速化 22 1秒あたりのアクセス数を増やすとは?ココ

WordPressプラグインの開発

11

・Prime Timeline

=>ランタイムプロファイラ

・001 Prime Strategy Translate

Accelerator

=>翻訳アクセラレータ

Page 12: ハイパフォーマンスWordPress...HTMLページのロード時間をFirebugのネットタブで確認する ページのロード時間 WordPressの高速化 22 1秒あたりのアクセス数を増やすとは?ココ

WordPress関連書籍の執筆など

12

(出版社:SBクリエイティブ株式会社他)

『WordPressの教科書』シリーズ

(出版社:株式会社オライリー・ジャパン)

『詳解 WordPress』

『WordPressによるWebアプリケーション開発』

Page 13: ハイパフォーマンスWordPress...HTMLページのロード時間をFirebugのネットタブで確認する ページのロード時間 WordPressの高速化 22 1秒あたりのアクセス数を増やすとは?ココ

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

13

3.WordPressの高速化

Page 14: ハイパフォーマンスWordPress...HTMLページのロード時間をFirebugのネットタブで確認する ページのロード時間 WordPressの高速化 22 1秒あたりのアクセス数を増やすとは?ココ

なぜWordPressの高速化が必要とされるのか?

14

1.WordPressはPHP+MySQLの動的なシステム

=>

静的なHTMLページに比べて動作速度の点で不利

Page 15: ハイパフォーマンスWordPress...HTMLページのロード時間をFirebugのネットタブで確認する ページのロード時間 WordPressの高速化 22 1秒あたりのアクセス数を増やすとは?ココ

なぜWordPressの高速化が必要とされるのか?

15

2.CPUの開発ロードマップは動作クロック(周波数)よ

りもコア数重視の流れ

=>

ハードの進化による処理速度向上を期待しづらい

Page 16: ハイパフォーマンスWordPress...HTMLページのロード時間をFirebugのネットタブで確認する ページのロード時間 WordPressの高速化 22 1秒あたりのアクセス数を増やすとは?ココ

なぜWordPressの高速化が必要とされるのか?

16

3.このような背景の中でオウンドメディアやサービス

サイトでは

(1)PV獲得の機会を失わないという観点

(2)ユーザーエクスペリエンス向上の観点

(3)検索エンジン最適化の観点

(4)Webサイトの信頼性、安定性の観点

Page 17: ハイパフォーマンスWordPress...HTMLページのロード時間をFirebugのネットタブで確認する ページのロード時間 WordPressの高速化 22 1秒あたりのアクセス数を増やすとは?ココ

WordPressの高速化とは?

17

1.サーバサイドでの高速化 <= 本日のテーマ

(サーバ、WordPress)

2.フロントエンドの高速化

(HTML、CSS、JavaScript)

Page 18: ハイパフォーマンスWordPress...HTMLページのロード時間をFirebugのネットタブで確認する ページのロード時間 WordPressの高速化 22 1秒あたりのアクセス数を増やすとは?ココ

サーバサイドの高速化とは?

18

HTMLページのロード時間を短くして

Page 19: ハイパフォーマンスWordPress...HTMLページのロード時間をFirebugのネットタブで確認する ページのロード時間 WordPressの高速化 22 1秒あたりのアクセス数を増やすとは?ココ

サーバサイドの高速化とは?

19

HTMLページのロード時間を短くして

1秒あたりのリクエスト数を増やすこと

Page 20: ハイパフォーマンスWordPress...HTMLページのロード時間をFirebugのネットタブで確認する ページのロード時間 WordPressの高速化 22 1秒あたりのアクセス数を増やすとは?ココ

WordPressの高速化

20

HTMLページのロード時間を短くする=①+②+③を短縮する

ブラウザ サーバ(WordPress)

①HTTPリクエスト送信

②実行

③HTTPレスポンス受信

Page 21: ハイパフォーマンスWordPress...HTMLページのロード時間をFirebugのネットタブで確認する ページのロード時間 WordPressの高速化 22 1秒あたりのアクセス数を増やすとは?ココ

WordPressの高速化

21

HTMLページのロード時間をFirebugのネットタブで確認する

ページのロード時間

Page 22: ハイパフォーマンスWordPress...HTMLページのロード時間をFirebugのネットタブで確認する ページのロード時間 WordPressの高速化 22 1秒あたりのアクセス数を増やすとは?ココ

WordPressの高速化

22

1秒あたりのアクセス数を増やすとは?

ココ

Page 23: ハイパフォーマンスWordPress...HTMLページのロード時間をFirebugのネットタブで確認する ページのロード時間 WordPressの高速化 22 1秒あたりのアクセス数を増やすとは?ココ

WordPressの高速化

23

ページのロード時間と1秒あたりのリクエスト数の関係

クイズ1(注:通信時間など無視しておおざっぱに考えます)

1vCPU(1コア)でページのロード時間が500ms

だった場合、

1秒あたりのリクエスト数はいくつになりますか?

Page 24: ハイパフォーマンスWordPress...HTMLページのロード時間をFirebugのネットタブで確認する ページのロード時間 WordPressの高速化 22 1秒あたりのアクセス数を増やすとは?ココ

WordPressの高速化

24

ページのロード時間と1秒あたりのリクエスト数の関係

クイズ2 (注:通信時間など無視しておおざっぱに考えます)

1vCPU(1コア)でページのロード時間を100msにチューニ

ングできた場合、

1秒あたりのリクエスト数はいくつになりますか?

Page 25: ハイパフォーマンスWordPress...HTMLページのロード時間をFirebugのネットタブで確認する ページのロード時間 WordPressの高速化 22 1秒あたりのアクセス数を増やすとは?ココ

WordPressの高速化

25

ページのロード時間と1秒あたりのリクエスト数の関係

クイズ3 (注:通信時間など無視しておおざっぱに考えます)

1vCPU(1コア)でページのロード時間が100msの場合、

2vCPU(2コア)にスケールアップすると

1秒あたりのリクエスト数はいくつになりますか?

Page 26: ハイパフォーマンスWordPress...HTMLページのロード時間をFirebugのネットタブで確認する ページのロード時間 WordPressの高速化 22 1秒あたりのアクセス数を増やすとは?ココ

WordPressの高速化

26

ページのロード時間と1秒あたりのリクエスト数の関係

クイズ4 (注:通信時間など無視しておおざっぱに考えます)

2vCPU(2コア)でページのロード時間が100msの場合、

4vCPU(4コア)にスケールアップするとページのロード時

間はいくつになりますか?

Page 27: ハイパフォーマンスWordPress...HTMLページのロード時間をFirebugのネットタブで確認する ページのロード時間 WordPressの高速化 22 1秒あたりのアクセス数を増やすとは?ココ

WordPressの高速化

27

HTMLページのロード時間を分解すると

ブラウザ サーバ(WordPress)

①リクエスト送信

ブラウザ

②実行

③レスポンス受信

通信時間

通信時間

PHPの実行

MySQLの実行

翻訳処理

Page 28: ハイパフォーマンスWordPress...HTMLページのロード時間をFirebugのネットタブで確認する ページのロード時間 WordPressの高速化 22 1秒あたりのアクセス数を増やすとは?ココ

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

28

4.ページキャッシュを使わずに

WordPressを高速化する

Page 29: ハイパフォーマンスWordPress...HTMLページのロード時間をFirebugのネットタブで確認する ページのロード時間 WordPressの高速化 22 1秒あたりのアクセス数を増やすとは?ココ

WordPressを高速化する

29

あるサーバを利用してデフォルトの状態だと

WordPress

1.ロード時間 246ms

2.リクエスト数 4.9リクエスト/秒

Page 30: ハイパフォーマンスWordPress...HTMLページのロード時間をFirebugのネットタブで確認する ページのロード時間 WordPressの高速化 22 1秒あたりのアクセス数を増やすとは?ココ

WordPressを高速化する

30

ページキャッシュを使わないでどこまでいけるか

WordPress

APC(PHPアクセラレータ)導入で約1.85倍

246ms→133ms

Page 31: ハイパフォーマンスWordPress...HTMLページのロード時間をFirebugのネットタブで確認する ページのロード時間 WordPressの高速化 22 1秒あたりのアクセス数を増やすとは?ココ

WordPressを高速化する

31

PHP実行の仕組み

PHPのソースコード

Page 32: ハイパフォーマンスWordPress...HTMLページのロード時間をFirebugのネットタブで確認する ページのロード時間 WordPressの高速化 22 1秒あたりのアクセス数を増やすとは?ココ

WordPressを高速化する

32

PHP実行の仕組み

中間コード

←これをZend Engine

(VM)が実行

Page 33: ハイパフォーマンスWordPress...HTMLページのロード時間をFirebugのネットタブで確認する ページのロード時間 WordPressの高速化 22 1秒あたりのアクセス数を増やすとは?ココ

WordPressを高速化する

33

ページキャッシュを使わないでどこまでいけるか

WordPress

APC(PHPアクセラレータ)導入で約1.85倍

246ms→133ms

けっこう簡単に導入できます。

たとえば、Centos 6の場合、最短rootで次のコマンドを打つだけ

yum install -y php-pecl-apc;

service httpd restart;

Page 34: ハイパフォーマンスWordPress...HTMLページのロード時間をFirebugのネットタブで確認する ページのロード時間 WordPressの高速化 22 1秒あたりのアクセス数を増やすとは?ココ

WordPressを高速化する

34

ページキャッシュを使わないでどこまでいけるか

WordPress

APC(PHPアクセラレータ)導入で約1.85倍

246ms→133ms

PHP5.4まではAPC

APC=PHPアクレラレータ+

ユーザーキャッシュ

PHP5.5からはOPcache(+20%)ユーザーキャッシュはAPCu拡張

PHP5.3、5.4はOPcacheとAPCuをPHP拡張として利用可能

Page 35: ハイパフォーマンスWordPress...HTMLページのロード時間をFirebugのネットタブで確認する ページのロード時間 WordPressの高速化 22 1秒あたりのアクセス数を増やすとは?ココ

WordPressを高速化する

35

ページキャッシュを使わないでどこまでいけるか

WordPress

MySQLのクエリキャッシュ導入で約1.15倍

133ms→115ms

APC(PHPアクセラレータ)導入で約1.85倍

246ms→133ms

Page 36: ハイパフォーマンスWordPress...HTMLページのロード時間をFirebugのネットタブで確認する ページのロード時間 WordPressの高速化 22 1秒あたりのアクセス数を増やすとは?ココ

WordPressを高速化する

36

ページキャッシュを使わないでどこまでいけるか

WordPress

MySQLのクエリキャッシュ導入で約1.15倍

133ms→115ms

APC(PHPアクセラレータ)導入で約1.85倍

246ms→133ms

簡単に導入できます。

たとえば、my.cnfのmysqldセクションに次の1行を追加してMySQLサーバを

restartすればOK

query_cache_size = 64M

Page 37: ハイパフォーマンスWordPress...HTMLページのロード時間をFirebugのネットタブで確認する ページのロード時間 WordPressの高速化 22 1秒あたりのアクセス数を増やすとは?ココ

WordPressを高速化する

37

ページキャッシュを使わないでどこまでいけるか

WordPress

MySQLのクエリキャッシュ導入で約1.15倍

133ms→115ms

翻訳キャッシュ(001 Prime

Strategy Translate Accelarator)導入で約1.6倍115ms→72ms

APC(PHPアクセラレータ)導入で約1.85倍

246ms→133ms

Page 38: ハイパフォーマンスWordPress...HTMLページのロード時間をFirebugのネットタブで確認する ページのロード時間 WordPressの高速化 22 1秒あたりのアクセス数を増やすとは?ココ

WordPressを高速化する

38

ページキャッシュを使わないでどこまでいけるか

WordPress

MySQLのクエリキャッシュ導入で約1.15倍

133ms→115ms

翻訳キャッシュ(001 Prime

Strategy Translate Accelarator)導入で約1.6倍115ms→72ms

APC(PHPアクセラレータ)導入で約1.85倍

246ms→133ms

WordPressのプラグインなので簡単に導入できます。

Page 39: ハイパフォーマンスWordPress...HTMLページのロード時間をFirebugのネットタブで確認する ページのロード時間 WordPressの高速化 22 1秒あたりのアクセス数を増やすとは?ココ

WordPressを高速化する

39

ページキャッシュを使わないでどこまでいけるか

WordPress

MySQLのクエリキャッシュ導入で約1.15倍

133ms→115ms

翻訳キャッシュ(001 Prime

Strategy Translate Accelarator)導入で約1.6倍115ms→72ms

APC(PHPアクセラレータ)導入で約1.85倍

246ms→133ms

Apache(mod_php)からNginx+HHVM構成に変更で

約2.2倍72ms→33ms

Page 40: ハイパフォーマンスWordPress...HTMLページのロード時間をFirebugのネットタブで確認する ページのロード時間 WordPressの高速化 22 1秒あたりのアクセス数を増やすとは?ココ

WordPressを高速化する

40

HHVM実行の仕組み

PHPのソースコード

Page 41: ハイパフォーマンスWordPress...HTMLページのロード時間をFirebugのネットタブで確認する ページのロード時間 WordPressの高速化 22 1秒あたりのアクセス数を増やすとは?ココ

WordPressを高速化する

41

HHVM実行の仕組み

中間コード

←これをHHVMが実行

Page 42: ハイパフォーマンスWordPress...HTMLページのロード時間をFirebugのネットタブで確認する ページのロード時間 WordPressの高速化 22 1秒あたりのアクセス数を増やすとは?ココ

WordPressを高速化する

42

HHVM実行の仕組み

何度も利用される部分をJITでコンパイルしてネイティブコー

ドへ

ネイティブコードをCPUが実行

Page 43: ハイパフォーマンスWordPress...HTMLページのロード時間をFirebugのネットタブで確認する ページのロード時間 WordPressの高速化 22 1秒あたりのアクセス数を増やすとは?ココ

WordPressを高速化する

43

ページキャッシュを使わないでどこまでいけるか

WordPress

MySQLのクエリキャッシュ導入で約1.15倍

133ms→115ms

翻訳キャッシュ(001 Prime

Strategy Translate Accelarator)導入で約1.6倍115ms→72ms

APC(PHPアクセラレータ)導入で約1.85倍

246ms→133ms

Apache(mod_php)からNginx+HHVM構成に変更で

約2.2倍72ms→33ms

ページ圧縮(gzip)導入で約1.1倍

33ms→30ms

Page 44: ハイパフォーマンスWordPress...HTMLページのロード時間をFirebugのネットタブで確認する ページのロード時間 WordPressの高速化 22 1秒あたりのアクセス数を増やすとは?ココ

WordPressを高速化する

44

ページキャッシュを使わないでどこまでいけるか

1.ロード時間 30ms

2.リクエスト数 56.8リクエスト/秒

1.ロード時間 246ms

2.リクエスト数 4.9リクエスト/秒

ロード時間 約8倍リクエスト数 約11.6倍に向上

Page 45: ハイパフォーマンスWordPress...HTMLページのロード時間をFirebugのネットタブで確認する ページのロード時間 WordPressの高速化 22 1秒あたりのアクセス数を増やすとは?ココ

WordPressを高速化する

45

ページキャッシュを使わないでどこまでいけるか

1.ロード時間 30ms

2.リクエスト数 56.8リクエスト/秒

このサーバのCPUの周波数とコア数を変更すると

どのような影響があるのか?

Page 46: ハイパフォーマンスWordPress...HTMLページのロード時間をFirebugのネットタブで確認する ページのロード時間 WordPressの高速化 22 1秒あたりのアクセス数を増やすとは?ココ

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

46

5.(おまけ)ページキャッシュとトランジェント

Page 47: ハイパフォーマンスWordPress...HTMLページのロード時間をFirebugのネットタブで確認する ページのロード時間 WordPressの高速化 22 1秒あたりのアクセス数を増やすとは?ココ

ページキャッシュを導入する( WP SiteManager、WP Super Cache、Nginx、Varnishなど)

47

Page 48: ハイパフォーマンスWordPress...HTMLページのロード時間をFirebugのネットタブで確認する ページのロード時間 WordPressの高速化 22 1秒あたりのアクセス数を増やすとは?ココ

ページキャッシュを導入する

48

WP SiteManagerの場合

1.ロード時間 15ms

2.リクエスト数 260リクエスト/秒

1.ロード時間 246ms

2.リクエスト数 4.9リクエスト/秒

ロード時間 約16.4倍リクエスト数 約53.1倍に向上

Page 49: ハイパフォーマンスWordPress...HTMLページのロード時間をFirebugのネットタブで確認する ページのロード時間 WordPressの高速化 22 1秒あたりのアクセス数を増やすとは?ココ

トランジェントを導入する

49

トランジェントとは?

WordPerss内部の値を一

時的にDB(wp_optionsテ

ーブル)に保存して、異な

るプロセスで再利用する

ためのWordPressの機能

=>

部分キャッシュとして利用

可能

Page 50: ハイパフォーマンスWordPress...HTMLページのロード時間をFirebugのネットタブで確認する ページのロード時間 WordPressの高速化 22 1秒あたりのアクセス数を増やすとは?ココ

トランジェントを導入する

50

トランジェントの具体例(footer.php)<?php

if ( ! $footer_cache = get_transient(

'footer_cache' ) ) {

ob_start();

?>

<footer id="colophon" class="site-footer"

role="contentinfo">

<?php get_sidebar( 'footer' ); ?>

<div class="site-info">

<?php do_action(

'twentyfourteen_credits' ); ?>

<a href="<?php echo esc_url( __(

'http://wordpress.org/', 'twentyfourteen' ) );

?>"><?php printf( __( 'Proudly powered by

%s', 'twentyfourteen' ), 'WordPress' ); ?></a>

</div><!-- .site-info -->

</footer><!-- #colophon -->

<?php

$footer_cache = ob_get_clean();

set_transient( 'footer_cache',

$footer_cache, 60 * 5 );

}

echo $footer_cache;

?>

Page 51: ハイパフォーマンスWordPress...HTMLページのロード時間をFirebugのネットタブで確認する ページのロード時間 WordPressの高速化 22 1秒あたりのアクセス数を増やすとは?ココ

ということで

51

Page 52: ハイパフォーマンスWordPress...HTMLページのロード時間をFirebugのネットタブで確認する ページのロード時間 WordPressの高速化 22 1秒あたりのアクセス数を増やすとは?ココ

ぜひ実践して

快適なWordPressライフをお過ごしください!

52

Page 53: ハイパフォーマンスWordPress...HTMLページのロード時間をFirebugのネットタブで確認する ページのロード時間 WordPressの高速化 22 1秒あたりのアクセス数を増やすとは?ココ

53

ご清聴ありがとうございました。