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

2,970 views

Published on

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

Published in: Technology
0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,970
On SlideShare
0
From Embeds
0
Number of Embeds
69
Actions
Shares
0
Downloads
24
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide

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

  1. 1. Prime Strategy Copyright (C) 2011 Prime Strategy co.,ltd.
  2. 2. Prime Strategy Copyright (C) 2011 Prime Strategy co.,ltd. 2
  3. 3. Prime Strategy Copyright (C) 2011 Prime Strategy co.,ltd. 3
  4. 4. Chapter 0 自己紹介WordPressインテグレーションサービスを提供するプライム・ストラテジー株式会社代表取締役。マイコンBASICマガジン時代からプログラミング暦約30年です。 @kengyu_n www.prime-strategy.co.jp kengyu.nakamura Prime Strategy Copyright (C) 2011 Prime Strategy co.,ltd. 4
  5. 5. Prime Strategy Copyright (C) 2011 Prime Strategy co.,ltd. 5
  6. 6. Chapter 1 本セッションのゴール(どこまで速くなるか) どのくらい速くしたいですか? Prime Strategy Copyright (C) 2011 Prime Strategy co.,ltd. 6
  7. 7. Chapter 1 本セッションのゴール(どこまで速くなるか) 10倍? Prime Strategy Copyright (C) 2011 Prime Strategy co.,ltd. 7
  8. 8. Chapter 1 本セッションのゴール(どこまで速くなるか) 100倍? Prime Strategy Copyright (C) 2011 Prime Strategy co.,ltd. 8
  9. 9. Chapter 1 本セッションのゴール(どこまで速くなるか) 1000倍? Prime Strategy Copyright (C) 2011 Prime Strategy co.,ltd. 9
  10. 10. Chapter 1 本セッションのゴール(どこまで速くなるか) もっとですか? Prime Strategy Copyright (C) 2011 Prime Strategy co.,ltd. 10
  11. 11. Chapter 1 本セッションのゴール(どこまで速くなるか) 2000倍!? Prime Strategy Copyright (C) 2011 Prime Strategy co.,ltd. 11
  12. 12. Chapter 1 本セッションのゴール(どこまで速くなるか) わかりました。あの手この 手でやってみましょう。 Prime Strategy Copyright (C) 2011 Prime Strategy co.,ltd. 12
  13. 13. Prime Strategy Copyright (C) 2011 Prime Strategy co.,ltd. 13
  14. 14. Chapter 2 具体的に何を高速化するのか 測定する対象 一、HTMLページのロード時間 二、1秒あたりのリクエスト数 Prime Strategy Copyright (C) 2011 Prime Strategy co.,ltd. 14
  15. 15. Chapter 2 具体的に何を高速化するのか 一、HTMLページのロード時間=①+②+③を短縮する ①リクエスト送信 ブラウザ サーバ(WordPress) ②実行 ③レスポンス受信 Prime Strategy Copyright (C) 2011 Prime Strategy co.,ltd. 15
  16. 16. Chapter 2 具体的に何を高速化するのか ロード時間を分解する 翻訳処理 MySQLの実行 伝送時間 PHPの実行 ③レスポンス受信 伝送時間 ②実行 ①リクエスト送信 ブラウザ サーバ(WordPress) ブラウザ Prime Strategy Copyright (C) 2011 Prime Strategy co.,ltd. 16
  17. 17. Chapter 2 具体的に何を高速化するのか 今回テストするサーバ環境など サーバの場所 Amazon東京DC サーバ(VPS) Amazon EC2 スモール インスタンス WordPress 3.2.1日本語版 アクセス元 東京某所 東京某所 東京のAmazon EC2 東京某所 Prime Strategy Copyright (C) 2011 Prime Strategy co.,ltd. 17
  18. 18. Chapter 2 具体的に何を高速化するのか HTMLページのロード時間をFirefoxのFirebugで測定する ロード時間は682ミリ秒 1,000ミリ秒=1秒。Firebugのネットタブ Prime Strategy Copyright (C) 2011 Prime Strategy co.,ltd. 18
  19. 19. Chapter 2 具体的に何を高速化するのか 二、1秒間に処理できるリクエスト数を増やす abというlinuxのコマンドライン ツールでAmazonに設置した WordPressに負荷をかけて測 定します。 => 1.50リクエスト/秒 Prime Strategy Copyright (C) 2011 Prime Strategy co.,ltd. 19
  20. 20. Chapter 2 具体的に何を高速化するのか 何もしない状態での測定結果 1.ロード時間 682ms 2.リクエスト数 1.5リクエスト/秒 Prime Strategy Copyright (C) 2011 Prime Strategy co.,ltd. 20
  21. 21. Chapter 2 具体的に何を高速化するのか 何もしない状態での測定結果 1.ロード時間 682ms 2.リクエスト数 1.5リクエスト/秒 あまりに遅すぎます。 Prime Strategy Copyright (C) 2011 Prime Strategy co.,ltd. 21
  22. 22. Chapter 2 具体的に何を高速化するのか そこでサーバ(VPS)を変更します(スケールアップ)。 サーバ(VPS) Amazon EC2 スモール インスタンス (CPU 約900MHz 1コア,メモリ 1.7G) サーバ(VPS) Amazon EC2 ミディアム インスタンス (CPU 約2.17GHz 2コア,メモリ 1.7G) Prime Strategy Copyright (C) 2011 Prime Strategy co.,ltd. 22
  23. 23. Chapter 2 具体的に何を高速化するのか スケールアップの効果 1.ロード時間 682ms→291ms(2.3倍) 2.リクエスト数 1.5リクエスト/秒→7.0リクエスト/秒(4.6倍) ロード時間はCPUの周波数に、リクエスト 数は周波数にコア数を乗じたものに比例 するのがわかります。 Prime Strategy Copyright (C) 2011 Prime Strategy co.,ltd. 23
  24. 24. Prime Strategy Copyright (C) 2011 Prime Strategy co.,ltd. 24
  25. 25. Chapter 3 日本語環境特有の場所と翻訳の問題 サーバの設置場所の違いによるロード時間の差 サーバの場所 Amazon東京DC サーバ(VPS) Amazon EC2 ミディアム インスタンス WordPress 3.2.1日本語版 アクセス元 東京某所 サーバの場所 Amazon世界各地のデータセンター で比較します。 (アメリカ東海岸、西海岸、シンガ ポール、東京で測定) Prime Strategy Copyright (C) 2011 Prime Strategy co.,ltd. 25
  26. 26. Chapter 3 日本語環境特有の場所と翻訳の問題 サーバの設置場所の違いによるロード時間の差 設置場所 ロード時間 遅延時間 ①東京 291ms 10ms ②シンガポール 564ms 283ms ① ③ ④ ③西海岸 653ms 372ms ④東海岸 898ms 617ms ② Prime Strategy Copyright (C) 2011 Prime Strategy co.,ltd. 26
  27. 27. Chapter 3 日本語環境特有の場所と翻訳の問題 サーバの設置場所の違いにより生じる伝送遅延時間 翻訳処理 MySQLの実行 伝送時間 PHPの実行 ③レスポンス受信 伝送時間 ②実行 ①リクエスト送信 ブラウザ サーバ(WordPress) ブラウザ Prime Strategy Copyright (C) 2011 Prime Strategy co.,ltd. 27
  28. 28. Chapter 3 日本語環境特有の場所と翻訳の問題 日本語翻訳処理 ja.moファイル等 を用いた翻訳プ ロセス 英語版 日本語版 Prime Strategy Copyright (C) 2011 Prime Strategy co.,ltd. 28
  29. 29. Chapter 3 日本語環境特有の場所と翻訳の問題 日本語翻訳処理のオーバーヘッド WordPress日本語版の実行時間 の最大75%を占めます。 =>改善策は次章でお話します。 Prime Strategy Copyright (C) 2011 Prime Strategy co.,ltd. 29
  30. 30. Prime Strategy Copyright (C) 2011 Prime Strategy co.,ltd. 30
  31. 31. Chapter 4 ページキャッシュを使わないで高速化する PHPを高速化する 翻訳処理 MySQLの実行 伝送時間 PHPの実行 ③レスポンス受信 伝送時間 ②実行 ①リクエスト送信 ブラウザ サーバ(WordPress) ブラウザ Prime Strategy Copyright (C) 2011 Prime Strategy co.,ltd. 31
  32. 32. Chapter 4 ページキャッシュを使わないで高速化する APCを導入してPHPの構文解析を高速化する。 PHPは実行時に通常のPHPファイル を構文解析し、バイトコードと呼ばれ るPHPだけが理解できる形式に変 換します。 APCはバイトコードをキャッシュして PHPの実行時間を短縮させます。 Prime Strategy Copyright (C) 2011 Prime Strategy co.,ltd. 32
  33. 33. Chapter 4 ページキャッシュを使わないで高速化する APC導入の効果 1.ロード時間 291ms→188ms(1.54倍) 2.リクエスト数 7.0リクエスト/秒→11.8リクエスト/秒(1.68倍) Prime Strategy Copyright (C) 2011 Prime Strategy co.,ltd. 33
  34. 34. Chapter 4 ページキャッシュを使わないで高速化する MySQLを高速化する 翻訳処理 MySQLの実行 伝送時間 PHPの実行 ③レスポンス受信 伝送時間 ②実行 ①リクエスト送信 ブラウザ サーバ(WordPress) ブラウザ Prime Strategy Copyright (C) 2011 Prime Strategy co.,ltd. 34
  35. 35. Chapter 4 ページキャッシュを使わないで高速化する MySQLを高速化する(クエリキャッシュの有効化) my.cnfの[mysqld]セクションに query_cache_size = 64M の一行を追加してクエリキャッシュを有効にします。 クエリキャッシュはデータベースに変更がない限り、一度発行されたSELECT 文の実行結果をキャッシュして、それを再利用するものです。 Prime Strategy Copyright (C) 2011 Prime Strategy co.,ltd. 35
  36. 36. Chapter 4 ページキャッシュを使わないで高速化する クエリキャッシュ導入の効果 1.ロード時間 188ms→186ms(1.01倍) 2.リクエスト数 11.8リクエスト/秒→12.0リクエスト/秒(1.01倍) セットアップ直後はあまり効果が見られませんが、クエ リ数やデータ数が増加してくると威力を発揮します。数 倍以上のパフォーマンスになることもあります。 Prime Strategy Copyright (C) 2011 Prime Strategy co.,ltd. 36
  37. 37. Chapter 4 ページキャッシュを使わないで高速化する 日本語翻訳処理を高速化する 翻訳処理 MySQLの実行 伝送時間 PHPの実行 ③レスポンス受信 伝送時間 ②実行 ①リクエスト送信 ブラウザ サーバ(WordPress) ブラウザ Prime Strategy Copyright (C) 2011 Prime Strategy co.,ltd. 37
  38. 38. Chapter 4 ページキャッシュを使わないで高速化する 001 Prime Strategy Translate Acceleratorを導入する WordPress.org公式ディレクトリから プラグインをダウンロードして有効化 します。 翻訳ファイルの読み込みにキャッ シュを用いたり、翻訳そのものを停 止させることで高速化します。 Prime Strategy Copyright (C) 2011 Prime Strategy co.,ltd. 38
  39. 39. Chapter 4 ページキャッシュを使わないで高速化する Translate Accelerator導入の効果(APCモード) 1.ロード時間 186ms→132ms(1.40倍) 2.リクエスト数 12.0リクエスト/秒→17.3リクエスト/秒(1.44倍) Prime Strategy Copyright (C) 2011 Prime Strategy co.,ltd. 39
  40. 40. Chapter 4 ページキャッシュを使わないで高速化する Translate Accelerator導入の効果(サイト表示の翻訳を停止) 1.ロード時間 132ms→75ms(1.76倍) 2.リクエスト数 17.3リクエスト/秒→40.9リクエスト/秒(2.36倍) Prime Strategy Copyright (C) 2011 Prime Strategy co.,ltd. 40
  41. 41. Chapter 4 ページキャッシュを使わないで高速化する HTMLを圧縮して転送を高速化する 翻訳処理 MySQLの実行 伝送時間 PHPの実行 ③レスポンス受信 伝送時間 ②実行 ①リクエスト送信 ブラウザ サーバ(WordPress) ブラウザ Prime Strategy Copyright (C) 2011 Prime Strategy co.,ltd. 41
  42. 42. Chapter 4 ページキャッシュを使わないで高速化する mod_deflate利用してファイル圧縮で転送量を減少させる mod_deflateが利用可な場合、Apacheの設定ファイルに、 AddOutputFilterByType DEFLATE text/html text/plain text/css 等の設定を行うと、該当するコンテントタイプのファイルをgzip圧縮します。 これによって転送量を減少させることができます。 Prime Strategy Copyright (C) 2011 Prime Strategy co.,ltd. 42
  43. 43. Chapter 4 ページキャッシュを使わないで高速化する mod_deflate導入の効果 1.ロード時間 75ms→66ms(1.13倍) 2.リクエスト数 40.9リクエスト/秒→41.0リクエスト/秒(1.00倍) リクエスト数にはあまり影響がありませんが、ページの ボリュームが多い場合には効果的です。また WordPressのみならずCSSやJavascriptなどにも適用で き、ページ全体の表示速度を向上させることができます。 Prime Strategy Copyright (C) 2011 Prime Strategy co.,ltd. 43
  44. 44. Prime Strategy Copyright (C) 2011 Prime Strategy co.,ltd. 44
  45. 45. Chapter 5 ページキャッシュを用いて高速化する ページキャッシュを用いる高速化 翻訳処理 MySQLの実行 伝送時間 PHPの実行 ③レスポンス受信 伝送時間 ②実行 ①リクエスト送信 ブラウザ サーバ(WordPress) ブラウザ Prime Strategy Copyright (C) 2011 Prime Strategy co.,ltd. 45
  46. 46. Chapter 5 ページキャッシュを用いて高速化する WP Super Cacheでページをキャッシュする WordPress.org公式ディレクトリから プラグインをダウンロードして有効化 します。 一度アクセスのあったページを キャッシュして再利用します。 Prime Strategy Copyright (C) 2011 Prime Strategy co.,ltd. 46
  47. 47. Chapter 5 ページキャッシュを用いて高速化する WP Super Cache導入の効果 1.ロード時間 66ms→25ms(2.64倍) 2.リクエスト数 41リクエスト/秒→679リクエスト/秒(16.56倍) Prime Strategy Copyright (C) 2011 Prime Strategy co.,ltd. 47
  48. 48. Chapter 5 ページキャッシュを用いて高速化する Nginxのプロクシキャッシュを使う(1回目のアクセス) ①リクエスト ④キャッシュ処理と レスポンス Nginx+proxy 80番ポート cache ②プロクシ ③PHP(WordPress)の実行 8080番ポート Nginx+fcgi Prime Strategy Copyright (C) 2011 Prime Strategy co.,ltd. 48
  49. 49. Chapter 5 ページキャッシュを用いて高速化する Nginxのプロクシキャッシュを使う(2回目以降のアクセス) ①リクエスト ②キャッシュを返す Nginx+proxy 80番ポート cache 8080番ポート Nginx+fcgi Prime Strategy Copyright (C) 2011 Prime Strategy co.,ltd. 49
  50. 50. Chapter 5 ページキャッシュを用いて高速化する Nginxのプロクシキャッシュ導入の効果 1.ロード時間 25ms→25ms(1.00倍) 2.リクエスト数 679リクエスト/秒→1515リクエスト/秒(2.23倍) Prime Strategy Copyright (C) 2011 Prime Strategy co.,ltd. 50
  51. 51. Chapter 5 ページキャッシュを用いて高速化する Nginx+Varnishでさらに高速化する(1回目のアクセス) ①リクエスト ⑥レスポンス 80番ポート Nginx+proxy ②プロクシ ⑤キャッシュ処理 6081番ポート Varnish + ③プロクシ ④PHP(WordPress)の実行 8080番ポート Nginx+fcgi Prime Strategy Copyright (C) 2011 Prime Strategy co.,ltd. 51
  52. 52. Chapter 5 ページキャッシュを用いて高速化する Nginx+Varnishでさらに高速化する(2回目のアクセス) ①リクエスト ④レスポンス 80番ポート Nginx+proxy ②プロクシ ③キャッシュを返す 6081番ポート Varnish + 8080番ポート Nginx+fcgi Prime Strategy Copyright (C) 2011 Prime Strategy co.,ltd. 52
  53. 53. Chapter 5 ページキャッシュを用いて高速化する Nginx+Varnish導入の効果 1.ロード時間 25ms→25ms(1.00倍) 2.リクエスト数 1515リクエスト/秒→2501リクエスト/秒(1.65倍) Prime Strategy Copyright (C) 2011 Prime Strategy co.,ltd. 53
  54. 54. Chapter 5 ページキャッシュを用いて高速化する 絶大な威力を発揮するページキャッシュ。では、これですべて解決か? ページキャッシュなし ページキャッシュあり テーマ修正 ○ キャッシュクリア必要 ウィジェット修正 ○ キャッシュクリア必要 設定変更 ○ キャッシュクリア必要 投稿 ○ △ 管理画面 ○ キャッシュ無効 セッション使用 ○ 対策が必要 データ書き込み ○ 対策が必要 条件に応じた ○ 対策が必要 表示の変化 Prime Strategy Copyright (C) 2011 Prime Strategy co.,ltd. 54
  55. 55. Prime Strategy Copyright (C) 2011 Prime Strategy co.,ltd. 55
  56. 56. Chapter 6 最終結果とまとめ おまけ:keep aliveを有効にして接続を再利用する 翻訳処理 MySQLの実行 伝送時間 PHPの実行 ③レスポンス受信 伝送時間 ②実行 ①リクエスト送信 ブラウザ サーバ(WordPress) ブラウザ Prime Strategy Copyright (C) 2011 Prime Strategy co.,ltd. 56
  57. 57. Chapter 6 最終結果とまとめ おまけ:keep aliveを有効にして接続を再利用する Apaceh、Nginxともにkeep aliveを有効にすることによって一度発生した接続 を一定時間再利用します。これにより、接続を確立させるまでのオーバー ヘッドを短縮します。 [Nginx]の場合 keepalive_timeout 3; [Apache]の場合 KeepAlive On Prime Strategy Copyright (C) 2011 Prime Strategy co.,ltd. 57
  58. 58. Chapter 6 最終結果とまとめ keep alive導入の効果 1.ロード時間 25ms→16ms(1.56倍) 2.リクエスト数 2501リクエスト/秒→3175リクエスト/秒(1.26倍) Prime Strategy Copyright (C) 2011 Prime Strategy co.,ltd. 58
  59. 59. Chapter 6 最終結果とまとめ 2,000倍速くなったか? 1.ロード時間 682ms→16ms(43倍) 2.リクエスト数 1.5リクエスト/秒→3175リクエスト/秒(2116倍) ロード時間は43倍でしたが、リクエスト数は2000倍を 達成しました。 Prime Strategy Copyright (C) 2011 Prime Strategy co.,ltd. 59
  60. 60. Chapter 6 最終結果とまとめ まとめ 001 Prime Strategy サーバの場所 Translate Accelarator クエリキャッシュ gzip圧縮 翻訳処理 サーバの場所 APC MySQLの実行 伝送時間 keep alive ③レスポンス受信 PHPの実行 伝送時間 ②実行 ①リクエスト送信 WP Super Cache Nginx+proxy cache Nginx+Varnish Prime Strategy サーバスペックの見直し Copyright (C) 2011 Prime Strategy co.,ltd. 60
  61. 61. ご清聴ありがとうございました。 Prime Strategy Copyright (C) 2011 Prime Strategy co.,ltd. 61

×