PHP APC(Alternative PHP Cache)による高速化
倍ぐらいリクエストの処理スピードが上がって、かなり、軽くなりました。
APCとは
Zend Engineは、スクリプトを実行する前に中間形式にコンパイルし、それを実行します。このコンパイルは、スクリプトにアクセスがあるたびに毎回実行されます。同じファイルをコンパイルしてできる中間形式は常に同じであるため、毎回行うことは無駄です。
APCを利用することで、この無駄をなくし、Webサーバのパフォーマンスを向上させることができます。
APC(Alternative PHP Cache)は、アクセスがあった際に生成した中間コードを捨てずに、ファイル、もしくは共有メモリに記憶し、以後、同じファイルにアクセスされたときに、記憶された中間コードを再利用することで高速化を実現します。
インストール
portsからインストールすることが可能です。
% cd /usr/ports/www/pecl-APC % make install clean % apachectl restart apache
phpinfoでapcを確認する
phpinfoの結果を見てます。
apc APC Support enabled Version 3.0.10 MMAP Support Enabled MMAP File Mask no value Revision $Revision: 3.84 $ Build Date Jul 29 2006 23:48:39 Directive Local Value Master Value apc.cache_by_default On On apc.enable_cli Off Off apc.enabled On On apc.file_update_protection 2 2 apc.filters no value no value apc.gc_ttl 3600 3600 apc.max_file_size 1M 1M apc.mmap_file_mask no value no value apc.num_files_hint 1000 1000 apc.optimization Off Off apc.shm_segments 1 1 apc.shm_size 30 30 apc.slam_defense Off Off apc.stat On On apc.ttl 0 0 apc.user_entries_hint 100 100 apc.user_ttl 0 0
設定
%vi /usr/local/etc/php/apc.ini
apc.enabled
1で有効、0で無効。デフォルトは1。
apc.shm_segments
コンパイラキャッシュのために割り当てる共有メモリセグメントの数。共有メモリセグメントが不足したなら、すでにシステムで許されるほど高くapc.shm_sizeをセットしているならこの値を高くして試してください。デフォルトは1。
apc.shm_size
それぞれの共有メモリセグメントのサイズ(MB)。デフォルトでは、いくつかのシステム(多くのBSDの派生がふくまれます)は、共有メモリセグメントのサイズに非常に低い制限があります。 デフォルトは30。
apc.optimization
最適化レベル。 0で最適化は無効です。 大きな値を設定することで、よりアグレッシブな最適化をします。 ささやかなスピードの改善を期待してください。 デフォルトは0。
apc.num_files_hint
あなたのwebサイトでincludeかrequireされる異なったソースファイルの数に関するhintです。わからなければ、0にセットするか、省略してください。 この設定は、主に数千のソースファイルがあるサイトに役立ちます。 デフォルトは1000。
apc.user_entries_hint
num_files_hintのように、ストアする個別のユーザのキャッシュ変数の数に関するhintです。わからなければ、0にセットするか、省略してください。 デフォルトは100。
apc.ttl
他のエントリによって、キャッシュエントリスロットが必要とされた場合に備え、キャッシュエントリのスロットでのアイドルのために許された秒数です。 0でなければ、より新しいエントリがキャッシュされない間、あなたのキャッシュが腐りかけたエントリで潜在的にいっぱいになることを意味します。 デフォルトは0。
apc.user_ttl
他のエントリによって、ユーザキャッシュエントリスロットが必要とされた場合に備え、キャッシュエントリのスロットでのアイドルのために許された秒数です。 0でなければ、より新しいエントリがキャッシュされない間、あなたのキャッシュが腐りかけたエントリで潜在的にいっぱいになることを意味します。 デフォルトは0。
ベンチマーク
APCが有効になると2倍ぐらいの処理スピードになった。
(それでもかなり遅い。。。)。
APC有効
kaworu% ab -c 1 http://paranoid.dip.jp/youtube/video/aQZWnci3tYA/ This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0 Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Copyright 2006 The Apache Software Foundation, http://www.apache.org/ Benchmarking paranoid.dip.jp (be patient).....done Server Software: Apache Server Hostname: paranoid.dip.jp Server Port: 80 Document Path: /youtube/video/aQZWnci3tYA/ Document Length: 59958 bytes Concurrency Level: 1 Time taken for tests: 7.427618 seconds Complete requests: 1 Failed requests: 0 Write errors: 0 Total transferred: 60097 bytes HTML transferred: 59958 bytes Requests per second: 0.13 [#/sec] (mean) Time per request: 7427.618 [ms] (mean) Time per request: 7427.618 [ms] (mean, across all concurrent requests) Transfer rate: 7.81 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 53 53 0.0 53 53 Processing: 7374 7374 0.0 7374 7374 Waiting: 2671 2671 0.0 2671 2671 Total: 7427 7427 0.0 7427 7427
APC無効
kaworu% ab -c 1 http://paranoid.dip.jp/youtube/video/aQZWnci3tYA/ This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0 Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Copyright 2006 The Apache Software Foundation, http://www.apache.org/ Benchmarking paranoid.dip.jp (be patient).....done Server Software: Apache Server Hostname: paranoid.dip.jp Server Port: 80 Document Path: /youtube/video/aQZWnci3tYA/ Document Length: 59958 bytes Concurrency Level: 1 Time taken for tests: 16.678287 seconds Complete requests: 1 Failed requests: 0 Write errors: 0 Total transferred: 60097 bytes HTML transferred: 59958 bytes Requests per second: 0.06 [#/sec] (mean) Time per request: 16678.288 [ms] (mean) Time per request: 16678.288 [ms] (mean, across all concurrent requests) Transfer rate: 3.48 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 450 450 0.0 450 450 Processing: 16228 16228 0.0 16228 16228 Waiting: 5343 5343 0.0 5343 5343 Total: 16678 16678 0.0 16678 16678
もっと情報を探しませんか?
関連記事
最近の記事
- パナソニック ジェットウォッシャードルツ EW-DJ61-Wのホースの修理
- LinuxセキュリティモジュールIntegrity Policy Enforcement
- アマゾンのEcho Show 5を買ったのでレビューします
- アマゾンのサイバーマンデーはAlexa Echo Show 5が安い
- Android スマートフォン OnePlus 7T と OnePlus 7の違い
- Android スマートフォン OnePlus 7 をAndroid10にアップデートしてみた
- クレジットカードのバーチャルカードの比較のまとめ
- 活動量計 Xiaomi Mi Band 4を買ってみたのでレビュー
- Android スマートフォン OnePlus 7 のレビュー
- AliExpressでスマートフォンを買い物してみた
- パソコンのホコリ対策 レンジフードフィルターと養生テープ
- 80PLUS GOLDのPC電源ユニットAntec NeoEco 750 Goldのレビュー
- イギリスの付加価値税 VAT は払い戻しを受けられる
- イギリスのロンドンでスーツケースなど荷物を預けられる場所は
- イギリスのロンドンで地下鉄やバスに乗るならオイスターカードを使おう
- イギリスのヒースロー空港からロンドン市内への行き方
- 航空便でほかの航空会社に乗り継ぎがある場合のオンラインチェックイン
- SFC会員がANA便ではなくベトナム航空のコードシェアを試して解ったこと
- ベトナムの入国審査でeチケットの掲示が必要だった話
- シアトルの交通ICカードはオルカカード(Orca)です
人気のページ
- Windows7 IME 辞書ツールで単語の登録に失敗しました
- C言語 popen()でコマンドを実行して出力を読み込む
- Windows7で休止状態にする方法
- CentOS MySQLの起動、停止、再起動
- loggerコマンドでsyslogにエラーを出力する方法
- パソコンパーツの買取をしてくれる店のまとめ
- Java Mapの使い方 get(),put(),remove(),size(),clear()
- 楽天のRポイントカードを作ってみた
- iPhone 5 から iPhone 6 に乗り換えたのでレビュー
- netstatコマンドのステータスの意味
過去ログ
2020 : 01 02 03 04 05 06 07 08 09 10 11 122019 : 01 02 03 04 05 06 07 08 09 10 11 12
2018 : 01 02 03 04 05 06 07 08 09 10 11 12
2017 : 01 02 03 04 05 06 07 08 09 10 11 12
2016 : 01 02 03 04 05 06 07 08 09 10 11 12
2015 : 01 02 03 04 05 06 07 08 09 10 11 12
2014 : 01 02 03 04 05 06 07 08 09 10 11 12
2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12