日本語環境におけるWordPressの高速化

61
Copyright (C) 2011 Prime Strategy co.,ltd. Prime Strategy

description

日本語環境を前提とした WordPress の高速化についてお話しします。英語版 WordPress と日本語版 WordPress のパフォーマンスの違いと改善策、海外サーバなど設置場所による通信速度の違いとサーバ選定、その他ビジネス現場での WordPress パフォーマンスチューニングの実際を具体的な手法と数値を用いてお話します。

Transcript of 日本語環境におけるWordPressの高速化

Page 1: 日本語環境におけるWordPressの高速化

Copyright (C) 2011 Prime Strategy co.,ltd.

Prime Strategy

Page 2: 日本語環境におけるWordPressの高速化

Copyright (C) 2011 Prime Strategy co.,ltd.

Prime Strategy2

Page 3: 日本語環境におけるWordPressの高速化

Copyright (C) 2011 Prime Strategy co.,ltd.

Prime Strategy3

Page 4: 日本語環境におけるWordPressの高速化

Copyright (C) 2011 Prime Strategy co.,ltd.

Prime Strategy4

Chapter 0 自己紹介

WordPressインテグレーション

サービスを提供するプライム・ス

トラテジー株式会社代表取締役。

マイコンBASICマガジン時代か

らプログラミング暦約30年です。

@kengyu_n

kengyu.nakamura

www.prime-strategy.co.jp

Page 5: 日本語環境におけるWordPressの高速化

Copyright (C) 2011 Prime Strategy co.,ltd.

Prime Strategy5

Page 6: 日本語環境におけるWordPressの高速化

Copyright (C) 2011 Prime Strategy co.,ltd.

Prime Strategy6

Chapter 1 本セッションのゴール(どこまで速くなるか)

どのくらい速くしたいですか?

Page 7: 日本語環境におけるWordPressの高速化

Copyright (C) 2011 Prime Strategy co.,ltd.

Prime Strategy7

Chapter 1 本セッションのゴール(どこまで速くなるか)

10倍?

Page 8: 日本語環境におけるWordPressの高速化

Copyright (C) 2011 Prime Strategy co.,ltd.

Prime Strategy8

Chapter 1 本セッションのゴール(どこまで速くなるか)

100倍?

Page 9: 日本語環境におけるWordPressの高速化

Copyright (C) 2011 Prime Strategy co.,ltd.

Prime Strategy9

Chapter 1 本セッションのゴール(どこまで速くなるか)

1000倍?

Page 10: 日本語環境におけるWordPressの高速化

Copyright (C) 2011 Prime Strategy co.,ltd.

Prime Strategy10

Chapter 1 本セッションのゴール(どこまで速くなるか)

もっとですか?

Page 11: 日本語環境におけるWordPressの高速化

Copyright (C) 2011 Prime Strategy co.,ltd.

Prime Strategy11

Chapter 1 本セッションのゴール(どこまで速くなるか)

2000倍!?

Page 12: 日本語環境におけるWordPressの高速化

Copyright (C) 2011 Prime Strategy co.,ltd.

Prime Strategy12

Chapter 1 本セッションのゴール(どこまで速くなるか)

わかりました。あの手この

手でやってみましょう。

Page 13: 日本語環境におけるWordPressの高速化

Copyright (C) 2011 Prime Strategy co.,ltd.

Prime Strategy13

Page 14: 日本語環境におけるWordPressの高速化

Copyright (C) 2011 Prime Strategy co.,ltd.

Prime Strategy14

測定する対象

Chapter 2 具体的に何を高速化するのか

一、HTMLページのロード時間

二、1秒あたりのリクエスト数

Page 15: 日本語環境におけるWordPressの高速化

Copyright (C) 2011 Prime Strategy co.,ltd.

Prime Strategy15

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

ブラウザ

Chapter 2 具体的に何を高速化するのか

サーバ(WordPress)

①リクエスト送信

②実行

③レスポンス受信

Page 16: 日本語環境におけるWordPressの高速化

Copyright (C) 2011 Prime Strategy co.,ltd.

Prime Strategy16

ロード時間を分解する

ブラウザ

Chapter 2 具体的に何を高速化するのか

サーバ(WordPress)

①リクエスト送信

ブラウザ

②実行

③レスポンス受信

伝送時間

伝送時間

PHPの実行

MySQLの実行

翻訳処理

Page 17: 日本語環境におけるWordPressの高速化

Copyright (C) 2011 Prime Strategy co.,ltd.

Prime Strategy17

今回テストするサーバ環境など

Chapter 2 具体的に何を高速化するのか

サーバの場所 Amazon東京DC

サーバ(VPS) Amazon EC2 スモール インスタンス

WordPress 3.2.1日本語版

アクセス元 東京某所

東京某所 東京のAmazon EC2 東京某所

Page 18: 日本語環境におけるWordPressの高速化

Copyright (C) 2011 Prime Strategy co.,ltd.

Prime Strategy18

HTMLページのロード時間をFirefoxのFirebugで測定する

Chapter 2 具体的に何を高速化するのか

Firebugのネットタブ

ロード時間は682ミリ秒

1,000ミリ秒=1秒。

Page 19: 日本語環境におけるWordPressの高速化

Copyright (C) 2011 Prime Strategy co.,ltd.

Prime Strategy19

二、1秒間に処理できるリクエスト数を増やす

Chapter 2 具体的に何を高速化するのか

abというlinuxのコマンドライン

ツールでAmazonに設置した

WordPressに負荷をかけて測

定します。

=> 1.50リクエスト/秒

Page 20: 日本語環境におけるWordPressの高速化

Copyright (C) 2011 Prime Strategy co.,ltd.

Prime Strategy20

何もしない状態での測定結果

Chapter 2 具体的に何を高速化するのか

1.ロード時間 682ms

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

Page 21: 日本語環境におけるWordPressの高速化

Copyright (C) 2011 Prime Strategy co.,ltd.

Prime Strategy21

何もしない状態での測定結果

Chapter 2 具体的に何を高速化するのか

1.ロード時間 682ms

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

あまりに遅すぎます。

Page 22: 日本語環境におけるWordPressの高速化

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)

Page 23: 日本語環境におけるWordPressの高速化

Copyright (C) 2011 Prime Strategy co.,ltd.

Prime Strategy23

スケールアップの効果

Chapter 2 具体的に何を高速化するのか

1.ロード時間 682ms→291ms(2.3倍)

2.リクエスト数 1.5リクエスト/秒→7.0リクエスト/秒(4.6倍)

ロード時間はCPUの周波数に、リクエスト

数は周波数にコア数を乗じたものに比例

するのがわかります。

Page 24: 日本語環境におけるWordPressの高速化

Copyright (C) 2011 Prime Strategy co.,ltd.

Prime Strategy24

Page 25: 日本語環境におけるWordPressの高速化

Copyright (C) 2011 Prime Strategy co.,ltd.

Prime Strategy25

Chapter 3 日本語環境特有の場所と翻訳の問題

サーバの設置場所の違いによるロード時間の差

サーバの場所 Amazon世界各地のデータセンターで比較します。(アメリカ東海岸、西海岸、シンガポール、東京で測定)

サーバの場所 Amazon東京DC

サーバ(VPS) Amazon EC2 ミディアム インスタンス

WordPress 3.2.1日本語版

アクセス元 東京某所

Page 26: 日本語環境におけるWordPressの高速化

Copyright (C) 2011 Prime Strategy co.,ltd.

Prime Strategy26

Chapter 3 日本語環境特有の場所と翻訳の問題

サーバの設置場所の違いによるロード時間の差

設置場所 ロード時間 遅延時間

①東京 291ms 10ms

②シンガポール 564ms 283ms

③西海岸 653ms 372ms

④東海岸 898ms 617ms

③ ④

Page 27: 日本語環境におけるWordPressの高速化

Copyright (C) 2011 Prime Strategy co.,ltd.

Prime Strategy27

Chapter 3 日本語環境特有の場所と翻訳の問題

サーバの設置場所の違いにより生じる伝送遅延時間

ブラウザ サーバ(WordPress)

①リクエスト送信

ブラウザ

②実行

③レスポンス受信

伝送時間

伝送時間

PHPの実行

MySQLの実行

翻訳処理

Page 28: 日本語環境におけるWordPressの高速化

Copyright (C) 2011 Prime Strategy co.,ltd.

Prime Strategy28

Chapter 3 日本語環境特有の場所と翻訳の問題

日本語翻訳処理

英語版 日本語版

ja.moファイル等

を用いた翻訳プ

ロセス

Page 29: 日本語環境におけるWordPressの高速化

Copyright (C) 2011 Prime Strategy co.,ltd.

Prime Strategy29

Chapter 3 日本語環境特有の場所と翻訳の問題

日本語翻訳処理のオーバーヘッド

WordPress日本語版の実行時間

の最大75%を占めます。

=>改善策は次章でお話します。

Page 30: 日本語環境におけるWordPressの高速化

Copyright (C) 2011 Prime Strategy co.,ltd.

Prime Strategy30

Page 31: 日本語環境におけるWordPressの高速化

Copyright (C) 2011 Prime Strategy co.,ltd.

Prime Strategy31

PHPを高速化する

Chapter 4 ページキャッシュを使わないで高速化する

ブラウザ サーバ(WordPress)

①リクエスト送信

ブラウザ

②実行

③レスポンス受信

伝送時間

伝送時間

PHPの実行

MySQLの実行

翻訳処理

Page 32: 日本語環境におけるWordPressの高速化

Copyright (C) 2011 Prime Strategy co.,ltd.

Prime Strategy32

APCを導入してPHPの構文解析を高速化する。

Chapter 4 ページキャッシュを使わないで高速化する

PHPは実行時に通常のPHPファイル

を構文解析し、バイトコードと呼ばれ

るPHPだけが理解できる形式に変

換します。

APCはバイトコードをキャッシュして

PHPの実行時間を短縮させます。

Page 33: 日本語環境におけるWordPressの高速化

Copyright (C) 2011 Prime Strategy co.,ltd.

Prime Strategy33

APC導入の効果

Chapter 4 ページキャッシュを使わないで高速化する

1.ロード時間 291ms→188ms(1.54倍)

2.リクエスト数 7.0リクエスト/秒→11.8リクエスト/秒(1.68倍)

Page 34: 日本語環境におけるWordPressの高速化

Copyright (C) 2011 Prime Strategy co.,ltd.

Prime Strategy34

MySQLを高速化する

Chapter 4 ページキャッシュを使わないで高速化する

ブラウザ サーバ(WordPress)

①リクエスト送信

ブラウザ

②実行

③レスポンス受信

伝送時間

伝送時間

PHPの実行

MySQLの実行

翻訳処理

Page 35: 日本語環境におけるWordPressの高速化

Copyright (C) 2011 Prime Strategy co.,ltd.

Prime Strategy35

MySQLを高速化する(クエリキャッシュの有効化)

Chapter 4 ページキャッシュを使わないで高速化する

my.cnfの[mysqld]セクションに

query_cache_size = 64M

の一行を追加してクエリキャッシュを有効にします。

クエリキャッシュはデータベースに変更がない限り、一度発行されたSELECT

文の実行結果をキャッシュして、それを再利用するものです。

Page 36: 日本語環境におけるWordPressの高速化

Copyright (C) 2011 Prime Strategy co.,ltd.

Prime Strategy36

クエリキャッシュ導入の効果

Chapter 4 ページキャッシュを使わないで高速化する

1.ロード時間 188ms→186ms(1.01倍)

2.リクエスト数 11.8リクエスト/秒→12.0リクエスト/秒(1.01倍)

セットアップ直後はあまり効果が見られませんが、クエ

リ数やデータ数が増加してくると威力を発揮します。数

倍以上のパフォーマンスになることもあります。

Page 37: 日本語環境におけるWordPressの高速化

Copyright (C) 2011 Prime Strategy co.,ltd.

Prime Strategy37

日本語翻訳処理を高速化する

Chapter 4 ページキャッシュを使わないで高速化する

ブラウザ サーバ(WordPress)

①リクエスト送信

ブラウザ

②実行

③レスポンス受信

伝送時間

伝送時間

PHPの実行

MySQLの実行

翻訳処理

Page 38: 日本語環境におけるWordPressの高速化

Copyright (C) 2011 Prime Strategy co.,ltd.

Prime Strategy38

001 Prime Strategy Translate Acceleratorを導入する

Chapter 4 ページキャッシュを使わないで高速化する

WordPress.org公式ディレクトリから

プラグインをダウンロードして有効化

します。

翻訳ファイルの読み込みにキャッ

シュを用いたり、翻訳そのものを停

止させることで高速化します。

Page 39: 日本語環境におけるWordPressの高速化

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倍)

Page 40: 日本語環境におけるWordPressの高速化

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倍)

Page 41: 日本語環境におけるWordPressの高速化

Copyright (C) 2011 Prime Strategy co.,ltd.

Prime Strategy41

HTMLを圧縮して転送を高速化する

Chapter 4 ページキャッシュを使わないで高速化する

ブラウザ サーバ(WordPress)

①リクエスト送信

ブラウザ

②実行

③レスポンス受信

伝送時間

伝送時間

PHPの実行

MySQLの実行

翻訳処理

Page 42: 日本語環境におけるWordPressの高速化

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圧縮します。

これによって転送量を減少させることができます。

Page 43: 日本語環境におけるWordPressの高速化

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などにも適用で

き、ページ全体の表示速度を向上させることができます。

Page 44: 日本語環境におけるWordPressの高速化

Copyright (C) 2011 Prime Strategy co.,ltd.

Prime Strategy44

Page 45: 日本語環境におけるWordPressの高速化

Copyright (C) 2011 Prime Strategy co.,ltd.

Prime Strategy45

ページキャッシュを用いる高速化

Chapter 5 ページキャッシュを用いて高速化する

ブラウザ サーバ(WordPress)

①リクエスト送信

ブラウザ

②実行

③レスポンス受信

伝送時間

伝送時間

PHPの実行

MySQLの実行

翻訳処理

Page 46: 日本語環境におけるWordPressの高速化

Copyright (C) 2011 Prime Strategy co.,ltd.

Prime Strategy46

WP Super Cacheでページをキャッシュする

Chapter 5 ページキャッシュを用いて高速化する

WordPress.org公式ディレクトリから

プラグインをダウンロードして有効化

します。

一度アクセスのあったページを

キャッシュして再利用します。

Page 47: 日本語環境におけるWordPressの高速化

Copyright (C) 2011 Prime Strategy co.,ltd.

Prime Strategy47

WP Super Cache導入の効果

Chapter 5 ページキャッシュを用いて高速化する

1.ロード時間 66ms→25ms(2.64倍)

2.リクエスト数 41リクエスト/秒→679リクエスト/秒(16.56倍)

Page 48: 日本語環境におけるWordPressの高速化

Copyright (C) 2011 Prime Strategy co.,ltd.

Prime Strategy48

Nginxのプロクシキャッシュを使う(1回目のアクセス)

Chapter 5 ページキャッシュを用いて高速化する

Nginx+proxy cache80番ポート

Nginx+fcgi8080番ポート

②プロクシ ③PHP(WordPress)の実行

④キャッシュ処理とレスポンス

①リクエスト

Page 49: 日本語環境におけるWordPressの高速化

Copyright (C) 2011 Prime Strategy co.,ltd.

Prime Strategy49

Nginxのプロクシキャッシュを使う(2回目以降のアクセス)

Chapter 5 ページキャッシュを用いて高速化する

Nginx+proxy cache80番ポート

Nginx+fcgi8080番ポート

②キャッシュを返す①リクエスト

Page 50: 日本語環境におけるWordPressの高速化

Copyright (C) 2011 Prime Strategy co.,ltd.

Prime Strategy50

Nginxのプロクシキャッシュ導入の効果

Chapter 5 ページキャッシュを用いて高速化する

1.ロード時間 25ms→25ms(1.00倍)

2.リクエスト数 679リクエスト/秒→1515リクエスト/秒(2.23倍)

Page 51: 日本語環境におけるWordPressの高速化

Copyright (C) 2011 Prime Strategy co.,ltd.

Prime Strategy51

Nginx+Varnishでさらに高速化する(1回目のアクセス)

Chapter 5 ページキャッシュを用いて高速化する

Nginx+proxy80番ポート

+

8080番ポート

②プロクシ

④PHP(WordPress)の実行

⑤キャッシュ処理

①リクエスト

Varnish6081番ポート

Nginx+fcgi

③プロクシ

⑥レスポンス

Page 52: 日本語環境におけるWordPressの高速化

Copyright (C) 2011 Prime Strategy co.,ltd.

Prime Strategy52

Nginx+Varnishでさらに高速化する(2回目のアクセス)

Chapter 5 ページキャッシュを用いて高速化する

Nginx+proxy80番ポート

+

8080番ポート

②プロクシ ③キャッシュを返す

①リクエスト

Varnish6081番ポート

Nginx+fcgi

④レスポンス

Page 53: 日本語環境におけるWordPressの高速化

Copyright (C) 2011 Prime Strategy co.,ltd.

Prime Strategy53

Nginx+Varnish導入の効果

Chapter 5 ページキャッシュを用いて高速化する

1.ロード時間 25ms→25ms(1.00倍)

2.リクエスト数 1515リクエスト/秒→2501リクエスト/秒(1.65倍)

Page 54: 日本語環境におけるWordPressの高速化

Copyright (C) 2011 Prime Strategy co.,ltd.

Prime Strategy54

絶大な威力を発揮するページキャッシュ。では、これですべて解決か?

Chapter 5 ページキャッシュを用いて高速化する

ページキャッシュなし ページキャッシュあり

テーマ修正 ○ キャッシュクリア必要

ウィジェット修正 ○ キャッシュクリア必要

設定変更 ○ キャッシュクリア必要

投稿 ○ △

管理画面 ○ キャッシュ無効

セッション使用 ○ 対策が必要

データ書き込み ○ 対策が必要

条件に応じた表示の変化

○ 対策が必要

Page 55: 日本語環境におけるWordPressの高速化

Copyright (C) 2011 Prime Strategy co.,ltd.

Prime Strategy55

Page 56: 日本語環境におけるWordPressの高速化

Copyright (C) 2011 Prime Strategy co.,ltd.

Prime Strategy56

おまけ:keep aliveを有効にして接続を再利用する

Chapter 6 最終結果とまとめ

ブラウザ サーバ(WordPress)

①リクエスト送信

ブラウザ

②実行

③レスポンス受信

伝送時間

伝送時間

PHPの実行

MySQLの実行

翻訳処理

Page 57: 日本語環境におけるWordPressの高速化

Copyright (C) 2011 Prime Strategy co.,ltd.

Prime Strategy57

おまけ:keep aliveを有効にして接続を再利用する

Chapter 6 最終結果とまとめ

Apaceh、Nginxともにkeep aliveを有効にすることによって一度発生した接続

を一定時間再利用します。これにより、接続を確立させるまでのオーバー

ヘッドを短縮します。

[Nginx]の場合

keepalive_timeout 3;

[Apache]の場合

KeepAlive On

Page 58: 日本語環境におけるWordPressの高速化

Copyright (C) 2011 Prime Strategy co.,ltd.

Prime Strategy58

keep alive導入の効果

Chapter 6 最終結果とまとめ

1.ロード時間 25ms→16ms(1.56倍)

2.リクエスト数 2501リクエスト/秒→3175リクエスト/秒(1.26倍)

Page 59: 日本語環境におけるWordPressの高速化

Copyright (C) 2011 Prime Strategy co.,ltd.

Prime Strategy59

2,000倍速くなったか?

Chapter 6 最終結果とまとめ

1.ロード時間 682ms→16ms(43倍)

2.リクエスト数 1.5リクエスト/秒→3175リクエスト/秒(2116倍)

ロード時間は43倍でしたが、リクエスト数は2000倍を

達成しました。

Page 60: 日本語環境におけるWordPressの高速化

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

サーバスペックの見直し

Page 61: 日本語環境におけるWordPressの高速化

Copyright (C) 2011 Prime Strategy co.,ltd.

Prime Strategy61

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