日本語環境におけるwordpressの高速化
DESCRIPTION
日本語環境を前提とした WordPress の高速化についてお話しします。英語版 WordPress と日本語版 WordPress のパフォーマンスの違いと改善策、海外サーバなど設置場所による通信速度の違いとサーバ選定、その他ビジネス現場での WordPress パフォーマンスチューニングの実際を具体的な手法と数値を用いてお話します。TRANSCRIPT
Copyright (C) 2011 Prime Strategy co.,ltd.
Prime Strategy
Copyright (C) 2011 Prime Strategy co.,ltd.
Prime Strategy2
Copyright (C) 2011 Prime Strategy co.,ltd.
Prime Strategy3
Copyright (C) 2011 Prime Strategy co.,ltd.
Prime Strategy4
Chapter 0 自己紹介
WordPressインテグレーション
サービスを提供するプライム・ス
トラテジー株式会社代表取締役。
マイコンBASICマガジン時代か
らプログラミング暦約30年です。
@kengyu_n
kengyu.nakamura
www.prime-strategy.co.jp
Copyright (C) 2011 Prime Strategy co.,ltd.
Prime Strategy5
Copyright (C) 2011 Prime Strategy co.,ltd.
Prime Strategy6
Chapter 1 本セッションのゴール(どこまで速くなるか)
どのくらい速くしたいですか?
Copyright (C) 2011 Prime Strategy co.,ltd.
Prime Strategy7
Chapter 1 本セッションのゴール(どこまで速くなるか)
10倍?
Copyright (C) 2011 Prime Strategy co.,ltd.
Prime Strategy8
Chapter 1 本セッションのゴール(どこまで速くなるか)
100倍?
Copyright (C) 2011 Prime Strategy co.,ltd.
Prime Strategy9
Chapter 1 本セッションのゴール(どこまで速くなるか)
1000倍?
Copyright (C) 2011 Prime Strategy co.,ltd.
Prime Strategy10
Chapter 1 本セッションのゴール(どこまで速くなるか)
もっとですか?
Copyright (C) 2011 Prime Strategy co.,ltd.
Prime Strategy11
Chapter 1 本セッションのゴール(どこまで速くなるか)
2000倍!?
Copyright (C) 2011 Prime Strategy co.,ltd.
Prime Strategy12
Chapter 1 本セッションのゴール(どこまで速くなるか)
わかりました。あの手この
手でやってみましょう。
Copyright (C) 2011 Prime Strategy co.,ltd.
Prime Strategy13
Copyright (C) 2011 Prime Strategy co.,ltd.
Prime Strategy14
測定する対象
Chapter 2 具体的に何を高速化するのか
一、HTMLページのロード時間
二、1秒あたりのリクエスト数
Copyright (C) 2011 Prime Strategy co.,ltd.
Prime Strategy15
一、HTMLページのロード時間=①+②+③を短縮する
ブラウザ
Chapter 2 具体的に何を高速化するのか
サーバ(WordPress)
①リクエスト送信
②実行
③レスポンス受信
Copyright (C) 2011 Prime Strategy co.,ltd.
Prime Strategy16
ロード時間を分解する
ブラウザ
Chapter 2 具体的に何を高速化するのか
サーバ(WordPress)
①リクエスト送信
ブラウザ
②実行
③レスポンス受信
伝送時間
伝送時間
PHPの実行
MySQLの実行
翻訳処理
Copyright (C) 2011 Prime Strategy co.,ltd.
Prime Strategy17
今回テストするサーバ環境など
Chapter 2 具体的に何を高速化するのか
サーバの場所 Amazon東京DC
サーバ(VPS) Amazon EC2 スモール インスタンス
WordPress 3.2.1日本語版
アクセス元 東京某所
東京某所 東京のAmazon EC2 東京某所
Copyright (C) 2011 Prime Strategy co.,ltd.
Prime Strategy18
HTMLページのロード時間をFirefoxのFirebugで測定する
Chapter 2 具体的に何を高速化するのか
Firebugのネットタブ
ロード時間は682ミリ秒
1,000ミリ秒=1秒。
Copyright (C) 2011 Prime Strategy co.,ltd.
Prime Strategy19
二、1秒間に処理できるリクエスト数を増やす
Chapter 2 具体的に何を高速化するのか
abというlinuxのコマンドライン
ツールでAmazonに設置した
WordPressに負荷をかけて測
定します。
=> 1.50リクエスト/秒
Copyright (C) 2011 Prime Strategy co.,ltd.
Prime Strategy20
何もしない状態での測定結果
Chapter 2 具体的に何を高速化するのか
1.ロード時間 682ms
2.リクエスト数 1.5リクエスト/秒
Copyright (C) 2011 Prime Strategy co.,ltd.
Prime Strategy21
何もしない状態での測定結果
Chapter 2 具体的に何を高速化するのか
1.ロード時間 682ms
2.リクエスト数 1.5リクエスト/秒
あまりに遅すぎます。
Copyright (C) 2011 Prime Strategy co.,ltd.
Prime Strategy22
そこでサーバ(VPS)を変更します(スケールアップ)。
Chapter 2 具体的に何を高速化するのか
サーバ(VPS) Amazon EC2 スモール インスタンス(CPU 約900MHz 1コア,メモリ 1.7G)
サーバ(VPS) Amazon EC2 ミディアム インスタンス(CPU 約2.17GHz 2コア,メモリ 1.7G)
Copyright (C) 2011 Prime Strategy co.,ltd.
Prime Strategy23
スケールアップの効果
Chapter 2 具体的に何を高速化するのか
1.ロード時間 682ms→291ms(2.3倍)
2.リクエスト数 1.5リクエスト/秒→7.0リクエスト/秒(4.6倍)
ロード時間はCPUの周波数に、リクエスト
数は周波数にコア数を乗じたものに比例
するのがわかります。
Copyright (C) 2011 Prime Strategy co.,ltd.
Prime Strategy24
Copyright (C) 2011 Prime Strategy co.,ltd.
Prime Strategy25
Chapter 3 日本語環境特有の場所と翻訳の問題
サーバの設置場所の違いによるロード時間の差
サーバの場所 Amazon世界各地のデータセンターで比較します。(アメリカ東海岸、西海岸、シンガポール、東京で測定)
サーバの場所 Amazon東京DC
サーバ(VPS) Amazon EC2 ミディアム インスタンス
WordPress 3.2.1日本語版
アクセス元 東京某所
Copyright (C) 2011 Prime Strategy co.,ltd.
Prime Strategy26
Chapter 3 日本語環境特有の場所と翻訳の問題
サーバの設置場所の違いによるロード時間の差
設置場所 ロード時間 遅延時間
①東京 291ms 10ms
②シンガポール 564ms 283ms
③西海岸 653ms 372ms
④東海岸 898ms 617ms
①
②
③ ④
Copyright (C) 2011 Prime Strategy co.,ltd.
Prime Strategy27
Chapter 3 日本語環境特有の場所と翻訳の問題
サーバの設置場所の違いにより生じる伝送遅延時間
ブラウザ サーバ(WordPress)
①リクエスト送信
ブラウザ
②実行
③レスポンス受信
伝送時間
伝送時間
PHPの実行
MySQLの実行
翻訳処理
Copyright (C) 2011 Prime Strategy co.,ltd.
Prime Strategy28
Chapter 3 日本語環境特有の場所と翻訳の問題
日本語翻訳処理
英語版 日本語版
ja.moファイル等
を用いた翻訳プ
ロセス
Copyright (C) 2011 Prime Strategy co.,ltd.
Prime Strategy29
Chapter 3 日本語環境特有の場所と翻訳の問題
日本語翻訳処理のオーバーヘッド
WordPress日本語版の実行時間
の最大75%を占めます。
=>改善策は次章でお話します。
Copyright (C) 2011 Prime Strategy co.,ltd.
Prime Strategy30
Copyright (C) 2011 Prime Strategy co.,ltd.
Prime Strategy31
PHPを高速化する
Chapter 4 ページキャッシュを使わないで高速化する
ブラウザ サーバ(WordPress)
①リクエスト送信
ブラウザ
②実行
③レスポンス受信
伝送時間
伝送時間
PHPの実行
MySQLの実行
翻訳処理
Copyright (C) 2011 Prime Strategy co.,ltd.
Prime Strategy32
APCを導入してPHPの構文解析を高速化する。
Chapter 4 ページキャッシュを使わないで高速化する
PHPは実行時に通常のPHPファイル
を構文解析し、バイトコードと呼ばれ
るPHPだけが理解できる形式に変
換します。
APCはバイトコードをキャッシュして
PHPの実行時間を短縮させます。
Copyright (C) 2011 Prime Strategy co.,ltd.
Prime Strategy33
APC導入の効果
Chapter 4 ページキャッシュを使わないで高速化する
1.ロード時間 291ms→188ms(1.54倍)
2.リクエスト数 7.0リクエスト/秒→11.8リクエスト/秒(1.68倍)
Copyright (C) 2011 Prime Strategy co.,ltd.
Prime Strategy34
MySQLを高速化する
Chapter 4 ページキャッシュを使わないで高速化する
ブラウザ サーバ(WordPress)
①リクエスト送信
ブラウザ
②実行
③レスポンス受信
伝送時間
伝送時間
PHPの実行
MySQLの実行
翻訳処理
Copyright (C) 2011 Prime Strategy co.,ltd.
Prime Strategy35
MySQLを高速化する(クエリキャッシュの有効化)
Chapter 4 ページキャッシュを使わないで高速化する
my.cnfの[mysqld]セクションに
query_cache_size = 64M
の一行を追加してクエリキャッシュを有効にします。
クエリキャッシュはデータベースに変更がない限り、一度発行されたSELECT
文の実行結果をキャッシュして、それを再利用するものです。
Copyright (C) 2011 Prime Strategy co.,ltd.
Prime Strategy36
クエリキャッシュ導入の効果
Chapter 4 ページキャッシュを使わないで高速化する
1.ロード時間 188ms→186ms(1.01倍)
2.リクエスト数 11.8リクエスト/秒→12.0リクエスト/秒(1.01倍)
セットアップ直後はあまり効果が見られませんが、クエ
リ数やデータ数が増加してくると威力を発揮します。数
倍以上のパフォーマンスになることもあります。
Copyright (C) 2011 Prime Strategy co.,ltd.
Prime Strategy37
日本語翻訳処理を高速化する
Chapter 4 ページキャッシュを使わないで高速化する
ブラウザ サーバ(WordPress)
①リクエスト送信
ブラウザ
②実行
③レスポンス受信
伝送時間
伝送時間
PHPの実行
MySQLの実行
翻訳処理
Copyright (C) 2011 Prime Strategy co.,ltd.
Prime Strategy38
001 Prime Strategy Translate Acceleratorを導入する
Chapter 4 ページキャッシュを使わないで高速化する
WordPress.org公式ディレクトリから
プラグインをダウンロードして有効化
します。
翻訳ファイルの読み込みにキャッ
シュを用いたり、翻訳そのものを停
止させることで高速化します。
Copyright (C) 2011 Prime Strategy co.,ltd.
Prime Strategy39
Translate Accelerator導入の効果(APCモード)
Chapter 4 ページキャッシュを使わないで高速化する
1.ロード時間 186ms→132ms(1.40倍)
2.リクエスト数 12.0リクエスト/秒→17.3リクエスト/秒(1.44倍)
Copyright (C) 2011 Prime Strategy co.,ltd.
Prime Strategy40
Translate Accelerator導入の効果(サイト表示の翻訳を停止)
Chapter 4 ページキャッシュを使わないで高速化する
1.ロード時間 132ms→75ms(1.76倍)
2.リクエスト数 17.3リクエスト/秒→40.9リクエスト/秒(2.36倍)
Copyright (C) 2011 Prime Strategy co.,ltd.
Prime Strategy41
HTMLを圧縮して転送を高速化する
Chapter 4 ページキャッシュを使わないで高速化する
ブラウザ サーバ(WordPress)
①リクエスト送信
ブラウザ
②実行
③レスポンス受信
伝送時間
伝送時間
PHPの実行
MySQLの実行
翻訳処理
Copyright (C) 2011 Prime Strategy co.,ltd.
Prime Strategy42
mod_deflate利用してファイル圧縮で転送量を減少させる
Chapter 4 ページキャッシュを使わないで高速化する
mod_deflateが利用可な場合、Apacheの設定ファイルに、
AddOutputFilterByType DEFLATE text/html text/plain text/css
等の設定を行うと、該当するコンテントタイプのファイルをgzip圧縮します。
これによって転送量を減少させることができます。
Copyright (C) 2011 Prime Strategy co.,ltd.
Prime Strategy43
mod_deflate導入の効果
Chapter 4 ページキャッシュを使わないで高速化する
1.ロード時間 75ms→66ms(1.13倍)
2.リクエスト数 40.9リクエスト/秒→41.0リクエスト/秒(1.00倍)
リクエスト数にはあまり影響がありませんが、ページの
ボリュームが多い場合には効果的です。また
WordPressのみならずCSSやJavascriptなどにも適用で
き、ページ全体の表示速度を向上させることができます。
Copyright (C) 2011 Prime Strategy co.,ltd.
Prime Strategy44
Copyright (C) 2011 Prime Strategy co.,ltd.
Prime Strategy45
ページキャッシュを用いる高速化
Chapter 5 ページキャッシュを用いて高速化する
ブラウザ サーバ(WordPress)
①リクエスト送信
ブラウザ
②実行
③レスポンス受信
伝送時間
伝送時間
PHPの実行
MySQLの実行
翻訳処理
Copyright (C) 2011 Prime Strategy co.,ltd.
Prime Strategy46
WP Super Cacheでページをキャッシュする
Chapter 5 ページキャッシュを用いて高速化する
WordPress.org公式ディレクトリから
プラグインをダウンロードして有効化
します。
一度アクセスのあったページを
キャッシュして再利用します。
Copyright (C) 2011 Prime Strategy co.,ltd.
Prime Strategy47
WP Super Cache導入の効果
Chapter 5 ページキャッシュを用いて高速化する
1.ロード時間 66ms→25ms(2.64倍)
2.リクエスト数 41リクエスト/秒→679リクエスト/秒(16.56倍)
Copyright (C) 2011 Prime Strategy co.,ltd.
Prime Strategy48
Nginxのプロクシキャッシュを使う(1回目のアクセス)
Chapter 5 ページキャッシュを用いて高速化する
Nginx+proxy cache80番ポート
Nginx+fcgi8080番ポート
②プロクシ ③PHP(WordPress)の実行
④キャッシュ処理とレスポンス
①リクエスト
Copyright (C) 2011 Prime Strategy co.,ltd.
Prime Strategy49
Nginxのプロクシキャッシュを使う(2回目以降のアクセス)
Chapter 5 ページキャッシュを用いて高速化する
Nginx+proxy cache80番ポート
Nginx+fcgi8080番ポート
②キャッシュを返す①リクエスト
Copyright (C) 2011 Prime Strategy co.,ltd.
Prime Strategy50
Nginxのプロクシキャッシュ導入の効果
Chapter 5 ページキャッシュを用いて高速化する
1.ロード時間 25ms→25ms(1.00倍)
2.リクエスト数 679リクエスト/秒→1515リクエスト/秒(2.23倍)
Copyright (C) 2011 Prime Strategy co.,ltd.
Prime Strategy51
Nginx+Varnishでさらに高速化する(1回目のアクセス)
Chapter 5 ページキャッシュを用いて高速化する
Nginx+proxy80番ポート
+
8080番ポート
②プロクシ
④PHP(WordPress)の実行
⑤キャッシュ処理
①リクエスト
Varnish6081番ポート
Nginx+fcgi
③プロクシ
⑥レスポンス
Copyright (C) 2011 Prime Strategy co.,ltd.
Prime Strategy52
Nginx+Varnishでさらに高速化する(2回目のアクセス)
Chapter 5 ページキャッシュを用いて高速化する
Nginx+proxy80番ポート
+
8080番ポート
②プロクシ ③キャッシュを返す
①リクエスト
Varnish6081番ポート
Nginx+fcgi
④レスポンス
Copyright (C) 2011 Prime Strategy co.,ltd.
Prime Strategy53
Nginx+Varnish導入の効果
Chapter 5 ページキャッシュを用いて高速化する
1.ロード時間 25ms→25ms(1.00倍)
2.リクエスト数 1515リクエスト/秒→2501リクエスト/秒(1.65倍)
Copyright (C) 2011 Prime Strategy co.,ltd.
Prime Strategy54
絶大な威力を発揮するページキャッシュ。では、これですべて解決か?
Chapter 5 ページキャッシュを用いて高速化する
ページキャッシュなし ページキャッシュあり
テーマ修正 ○ キャッシュクリア必要
ウィジェット修正 ○ キャッシュクリア必要
設定変更 ○ キャッシュクリア必要
投稿 ○ △
管理画面 ○ キャッシュ無効
セッション使用 ○ 対策が必要
データ書き込み ○ 対策が必要
条件に応じた表示の変化
○ 対策が必要
Copyright (C) 2011 Prime Strategy co.,ltd.
Prime Strategy55
Copyright (C) 2011 Prime Strategy co.,ltd.
Prime Strategy56
おまけ:keep aliveを有効にして接続を再利用する
Chapter 6 最終結果とまとめ
ブラウザ サーバ(WordPress)
①リクエスト送信
ブラウザ
②実行
③レスポンス受信
伝送時間
伝送時間
PHPの実行
MySQLの実行
翻訳処理
Copyright (C) 2011 Prime Strategy co.,ltd.
Prime Strategy57
おまけ:keep aliveを有効にして接続を再利用する
Chapter 6 最終結果とまとめ
Apaceh、Nginxともにkeep aliveを有効にすることによって一度発生した接続
を一定時間再利用します。これにより、接続を確立させるまでのオーバー
ヘッドを短縮します。
[Nginx]の場合
keepalive_timeout 3;
[Apache]の場合
KeepAlive On
Copyright (C) 2011 Prime Strategy co.,ltd.
Prime Strategy58
keep alive導入の効果
Chapter 6 最終結果とまとめ
1.ロード時間 25ms→16ms(1.56倍)
2.リクエスト数 2501リクエスト/秒→3175リクエスト/秒(1.26倍)
Copyright (C) 2011 Prime Strategy co.,ltd.
Prime Strategy59
2,000倍速くなったか?
Chapter 6 最終結果とまとめ
1.ロード時間 682ms→16ms(43倍)
2.リクエスト数 1.5リクエスト/秒→3175リクエスト/秒(2116倍)
ロード時間は43倍でしたが、リクエスト数は2000倍を
達成しました。
Copyright (C) 2011 Prime Strategy co.,ltd.
Prime Strategy60
まとめ
Chapter 6 最終結果とまとめ
①リクエスト送信
②実行
③レスポンス受信
伝送時間
伝送時間
PHPの実行
MySQLの実行
翻訳処理
サーバの場所
keep alive
APC
クエリキャッシュ
001 Prime Strategy
Translate Accelaratorサーバの場所
gzip圧縮
WP Super CacheNginx+proxy cacheNginx+Varnish
サーバスペックの見直し
Copyright (C) 2011 Prime Strategy co.,ltd.
Prime Strategy61
ご清聴ありがとうございました。