私は大量のWebサーバーファームで、ほとんどのリクエストで約100ファイルを含む動的なPHPコードを提供しています。 APC opcodeキャッシュが有効になっており、include_once_overrideが有効になっていて、キャッシュに64MBのRAMを割り当てていますが、Apacheのプロセスをstraceするとopen()とstat()キャッシュから引き出される。私はキャッシュの統計情報で、キャッシュが占有されており、100%ヒット率で使用されていることがわかります。誰も洞察力を提供することはできますか?APCが有効になっていますが、Apacheはまだファイルを開いていますか?
5
A
答えて
7
アプリケーションにインクルードするすべてのパス名を使用していることを確認してください。 APCのドキュメントごと:
apc.stat整数
、この設定を変更することに注意してください。これはデフォルトではオンになっており、APCは各リクエストのスクリプトを修正(チェック)して修正済みかどうかを判断します。変更されている場合は、新しいバージョンを再コンパイルしてキャッシュします。この設定がオフの場合、APCはチェックしません。これは通常、APCにファイルの再チェックを強制し、Webサーバーを再起動するか、キャッシュを手動でクリアする必要があることを意味します。 FastCGI Webサーバーの設定では、再起動時にキャッシュがクリアされないことがあります。スクリプトファイルがほとんど変更されないプロダクションサーバーでは、無効な統計情報によって大幅なパフォーマンスの向上が実現できます。
このオプションは同様に適用されますが、相対パスインクルード(Unixで始まらないパス)では、ファイルを一意に識別するためにチェックする必要があります。絶対パスを使用する場合は、APCはstatをスキップしてその絶対パスをファイルの一意の識別子として使用できます。
PHPのための親指の良いルールはそうのようなプロジェクトへの完全なパスが含まれている定数を定義することです:
include_once PATH_PROJECT . '/some/dir/file.php';
:
// Assumes __FILE__ is in the root of your project
define('PATH_PROJECT', realpath(dirname(__FILE__)));
は、あなたのはそうのような含みを使用したがって、あなたはまだ相対パスの利便性を持っていますが、本当に完全なパスを使用しています。
関連する問題
- 1. レコードセットのクローズ後にdbDenyWriteがまだ有効になっています
- 2. cURLがphp.iniで有効になっていますが、まだ動作していません
- 3. ボタンイベントがまだ無効になっています。
- 4. Apache mod_rewriteが動作していないか、有効になっていません
- 5. 他のプロファイルが有効になっていない場合は、Mavenプロファイルを有効にしてください。
- 6. ビジュアルスタジオ公開ボタンが無効になっていますか?
- 7. html5ウェブソケットまたはロード時にフラッシュソケットが有効になっていますか?
- 8. ビューではユーザーインタラクションは無効になっていますが、サブビュー(UIButtons)で有効にされています
- 9. IE9で開発ツールを使用しているときに「何か」が有効になっていますか?
- 10. レール4で有効なレールが有効になっています:それは正しいですか?
- 11. Apache Tomcat Exception - 開いているファイルが多すぎます
- 12. なぜw3バリデーターはonClickが有効でないと言っていますか?
- 13. UIボタンが有効になっています
- 14. javacriptが有効になっています
- 15. JavaScriptが有効になっています
- 16. フレームが開いているかどうかに基づいてボタンを有効または無効にする
- 17. ファイルが閉じているか、まだメモリに残っていますか?
- 18. Zend ServerはAPCとApacheだけでインストールされていますか?
- 19. Android:モバイルデータが有効になっていないと例外をキャッチします。
- 20. 無効になっているチェックボックスが無効になっています
- 21. ListView用にScrollViewerが有効になっていません
- 22. get_result()は動作しません。mysqlndが有効になっています
- 23. Mod_rewriteは有効になっていますが動作しません。
- 24. HOWTO:NSWindowはフルスクリーンモード(Lion)で有効になっていますか?
- 25. InfoPath Forms Servicesが有効になっていません
- 26. ダイアログボックスでJquery hideが有効になっていません。
- 27. Heroku:SSLが有効になっていません
- 28. AVDハードウェアボタンが有効になっていません
- 29. SSE命令セットが有効になっていません
- 30. ExcelでActiveXのリストボックスが有効になっていません
あなたはinclude_once_overrideの有無にかかわらずサーバーのベンチマークを行いますか? – hobodave
ありがとう!はい、私はベンチマークの有無にかかわらず、目立った違いは見られませんでした。絶対パスを実装した後ではstat()の方がはるかに少なくなりましたが、私が含まれているすべてのファイルに対してaccess() apc.stat = 0.これは正常ですか?なぜファイルにアクセスする必要がありますか? – Will
ファイルの最初のインクルードが表示されていませんか?どのバージョンを使用していますか? APCは歴史的にinclude_once_overrideで問題を抱えていました。また、答えを使用するのではなく、回答を元の質問に編集してください。 – hobodave