• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
PHP 5.5ネーティブキャッシュの話
 

PHP 5.5ネーティブキャッシュの話

on

  • 5,747 views

PHP 5.5でオペコードキャッシュOPcacheが標準搭載されました。その使い方と特徴をベンチマークを交えて解説します。

PHP 5.5でオペコードキャッシュOPcacheが標準搭載されました。その使い方と特徴をベンチマークを交えて解説します。

Statistics

Views

Total Views
5,747
Views on SlideShare
5,639
Embed Views
108

Actions

Likes
18
Downloads
27
Comments
0

6 Embeds 108

https://ti7bsd2mqklod6oq6l8m74a4ip32qjt5-a-sites-opensocial.googleusercontent.com 59
https://twitter.com 24
http://localhost 20
http://127.0.0.1 2
https://www.chatwork.com 2
https://kcw.kddi.ne.jp 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    PHP 5.5ネーティブキャッシュの話 PHP 5.5ネーティブキャッシュの話 Presentation Transcript

    • PHP5.5 ネーティブキャッシュの話 廣川 類 @rui_hi PHPカンファレンス2013 2013年9月14日(土)
    • キャッシュとは? データを再利用する仕組み オペコードキャッシュとは? コンパイル後のバイトコードを共有メモリに保持、再利用することで、 パース/コンパイルの時間・負荷をなくす。 キャッシュの利点: 応答速度改善、サーバ負荷低減 実行形態:サーバ組込型:APC, Xcache, OPcache 等、分散型: memcache キャッシュとは? クライアント ( Webブラウザ ) クライアントクライアントクライアントクライアント キャッシュキャッシュキャッシュキャッシュ ページキャッシュページキャッシュページキャッシュページキャッシュ データデータデータデータ キャッシュキャッシュキャッシュキャッシュ オペコードオペコードオペコードオペコード キャッシュキャッシュキャッシュキャッシュ 出力 PHPスクリプト レスポンス リクエスト Webサーバー/PHP フラグメントキャッシュフラグメントキャッシュフラグメントキャッシュフラグメントキャッシュ コンパイル 出力キャッシュ出力キャッシュ出力キャッシュ出力キャッシュ 実行 関数APIDB パース
    • オペコードキャッシュはPHP 4時代から重要技術 スクリプトエンジンと一体で動作するため、開発が難しい 新バージョンへの追従遅延、動作不安定等の問題を発生 APC 3.1.14 公開キャンセル(2013/2): 深刻なメモリの問題 PHP 6でのAPC標準搭載化:PHP 6開発中断により延期 Opcache標準採用の流れ https://wiki.php.net/rfc/optimizerplus Zend Optimizer+をOSS化, PHP 5.5組込を提案(2013/1) Zend Optimizer+ から Zend OPcacheに改名(2013/3) 投票により採用決定(PHP 5.5リリースは2ヶ月遅延)(2013/3)
    • OPcacheの特徴 ユーザのメリット 標準的に使用できる 最新版に追従 安定化 APCとの違い OPcache APC 対応PHPバージョン 5.2~5.5 5.2~5.3, 5.4(β) 使用後メモリ管理 破棄→再起動 再利用 実行速度 1~1.2 1 付加機能 最適化 データキャッシュ,プリロード アップロード進捗表示,最適化
    • OPcacheインストール インストール ソースコードから組込 PHP 5.5 :バンドル、PHP 5.2~5.5はPECL, github configure に --enable-opcache オプション指定 php.ini 設定 zend_extension=/usr/local/lib/php/20121212/opcache.so opcache.enable=1 Zendエクステンションとして読込み(フルパス指定) Opcache有効化(デフォルト:有効)
    • php.ini 推奨設定オプション opcache.memory_consumption=128 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=4000 opcache.revalidate_freq=60 opcache.fast_shutdown=1 opcache.save_comments=0 opcache.enable_file_override=1 性能向上が期待できるが注意を要するオプション 最大メモリ 最大メモリ(文字列) 最大ファイル数 更新確認間隔[s] 再起動高速化 PHPDocキャッシュ除外 ファイル存在確認処理を代替 性能向上が期待できるオプション(要調整)
    • オプション (opcache. 省略) デフォルト 説明 enable On OPcache有効/無効 memory_consumption 64 使用メモリ[MB] interned_string_buffer 4 内部文字列用メモリ[MB] max_accelerated_files 2000 キャッシュ用ハッシュキーの最大数 validate_timestamps On 更新日付に基づきキャッシュ更新 revalidate_freq 2 タイムスタンプ更新確認間隔[s] revalidate_path Off include_path探索最適化有効/無効 optimization_level 0xffffffff 特定の最適化を有効/無効 enable_file_override Off ファイル存在確認関数をオーバーライド OPcache主要設定オプション(1) ■ 基本オプション、最適化
    • オプションオプションオプションオプション (opcache. 省略省略省略省略) デフォルトデフォルトデフォルトデフォルト 説明説明説明説明 blacklist_filename “” キャッシュ対象外とするファイルを指定 max_file_size 0 キャッシュ対象ファイルの最大サイズ restrict_api “” キャッシュ対象の先頭文字列を指定 save_comments On PHPDocコメント有効/無効 load_comments On 共有メモリからPHPDocコメントをロード OPcache主要設定オプション(2) オプション (opcache. 省略) デフォルト 説明 force_restart_timeout 180 指定秒経過時に強制再起動 max_wasted_percentage 5 廃棄済みメモリが指定%を越えると再起動 use_cwd On カレントディレクトリをキーに追加(衝突回避) error_log “” エラーログファイル名 log_verbosity_level 1 エラーログ詳細度(0..4) fast_shutdown Off 高速シャットダウン処理有効/無効 ■ キャッシュ対象を指定/限定(互換性に注意) ■ 安定性/デバッグ
    • ベンチマーク req/sec nominal Opcache APC 最適化無し PHP 5.5 23.42 62.40 (+166%) 56.52 (+10%) 57.65 (+8%) PHP 5.4 23.06 60.56 (+163%) 55.88 (+8%) 58.79 (+3%) PHP 5.3 22.30 49.04 (+120%) 45.53 (+8%) 47.12 (+4%) ab -n 1000 -c 20 http://www.example.com/ WordPress 3.6 (Ubuntu 13.04, nginx 1.2.6) 40 50 60 70 キャッシュなし
    • キャッシュ管理コンソール キャッシュ管理コンソール https://github.com/rlerdorf/opcache-status
    • Opcacheはデータキャッシュをサポートしない データキャッシュ用エクステンション: APCu 、Yac 、memcache 等を使う APCuの関数APIはAPC互換:既存のプラグイン等を使用可能 キャッシュに保存: apc_store($key, $var); キャッシュから取得: $var = apc_fetch($key); APCuによるユーザキャッシュ extension = apcu.so apc.enabled = 1 apc.shm_size = 32M PECL, githubで公開 構築: configureに –enable-apcu オプション指定 設定オプション
    • オプション (apc. 省略) デフォルト 説明 enabled On APCu有効/無効 preload_path “” 初期化時にプリロードするパス shm_size 32 共有メモリの大きさ[MB] shm_segments 1 共有メモリセグメント数 ttl 0 アクセス有効時間[s] gc_ttl 3600 キャッシュがGCリストに残る時間[s] smart 0 expungeを実行する有効メモリ割合 entries_hint 4096 キャッシュ中に存在する変数の数の予測値 slam_defense 1 キーのslammingを防止 serializer php シリアライザを指定 rfc1867 0 ファイルアップロードメータ機能有効 rfc1867_prefix “upload_” アップロード時に生成される変数の接頭辞 rfc1867_name “APCu_UPLOAD_PROGRESS” フォーム変数 rfc1867_freq 0 更新間隔[%または大きさ] APCu主要設定オプション
    • 管理コンソール:apc.php サーバ状況の監視、キャッシュの個別管理が可能 APCu管理コンソール
    • Opcache + APCuベンチマーク WordPress 3.6 (Ubuntu 13.04, nginx 1.2.6) APC Object Cache Backend (http://http://wordpress.org/plugins/apc/) [1] データ(オブジェクト)キャッシュ: Tribe Object Cache [2] ページキャッシュ: Batcache クライアント ( Webブラウザ ) クライアントクライアントクライアントクライアント キャッシュキャッシュキャッシュキャッシュ ページキャッシュページキャッシュページキャッシュページキャッシュ データデータデータデータ キャッシュキャッシュキャッシュキャッシュ オペコードオペコードオペコードオペコード キャッシュキャッシュキャッシュキャッシュ 出力 PHPスクリプト レスポンス リクエスト Webサーバー/PHP フラグメントキャッシュフラグメントキャッシュフラグメントキャッシュフラグメントキャッシュ コンパイル 出力キャッシュ出力キャッシュ出力キャッシュ出力キャッシュ 実行 関数APIDB パース Opcache Opcache+APCu+[1] Opcache+APCu+[2] 58.48 67.18 (+15%) 2197.18 (+3657%)
    • PHP 5.5でついにオペコードキャッシュ標準搭載化! 今後、PHPと共に進化していく(はず) アプリケーション、環境毎にパラメータ調整が必要 まとめ PHP 5.5 ネーティブキャッシュで爆速化!