web-dev-qa-db-ja.com

PHP / Centos / ApacheのeAccelerator設定

CentOSでPHP/Apacheを使用してWordpressを実行しているサーバーにeAcceleratorをインストールしています。たまに永続的な「ホワイトページ」が表示されます。これはおそらくPHP致命的なエラーです。 (これらのエラーはerror_logには表示されませんが)これらの「ホワイトページ」はサイト全体に散らばっています。eAcceleratorcontrol.phpページに移動し、キャッシュをクリア/クリーン/パージするまで続きます。 eAcceleratorを正しく構成していないことに気づきました。

これが私の現在の/etc/php.ini設定です:

  • _memory_limit = 128M;_
  • _eaccelerator.shm_size="64"_、ここでshm.sizeは、「eAcceleratorがキャッシュに割り当てる必要のある共有メモリの量PHPスクリプト」」です( http://eaccelerator.net/wiki/を参照)設定
  • _eaccelerator.shm_max="0"_、ここでshm_maxは、「ユーザーがeaccelerator_putなどの関数を使用して共有メモリに入れることができる最大サイズ...デフォルト値は「0」で、制限を無効にします」
  • _eaccelerator.shm_ttl="0"_- "eAcceleratorに新しいスクリプトをキャッシュするのに十分な空き共有メモリがない場合、少なくともshm_ttl秒以内にアクセスされていないすべてのスクリプトが共有メモリキャッシュから削除されます。デフォルトでは、この値はに設定されています。 「0」は、eAcceleratorが共有メモリから古いスクリプトを削除しようとしないことを意味します。
  • _eaccelerator.shm_Prune_period="0"_-「eAcceleratorにスクリプトをキャッシュするのに十分な空き共有メモリがない場合、前回の試行が「shm_Prune_period」秒より前に行われた場合、古いスクリプトを削除しようとします。デフォルト値は「0」です。 eAcceleratorは、共有メモリから古いスクリプトを削除しようとはしません。」
  • _eaccelerator.keys = "shm_only"_-「これらの設定は、eAcceleratorがユーザーコンテンツをキャッシュできる場所を制御します。.. 'shm_only'共有メモリにデータをキャッシュします。」

私のphpinfoページには、次のように書かれています。

  • _memory_limit 128M_
  • _Version 0.9.5.3_および_Caching Enabled true_

私のeAcceleratorcontrol.phpページには、

  • 合計64MB RAM利用可能
  • Memory usage 77.70% (49.73MB/ 64.00MB)
  • 27.6 MBは、PHPオペコードキャッシュ(ファイルサイズを自分で合計した)のキャッシュされたスクリプトによって使用されます)
  • 22.1 MBは、Wordpressオブジェクトキャッシュによって入力されるキャッシュキーによって使用されます。

私の質問は次のとおりです。

  • EAcceleratorキャッシュには、合計「キャッシュキー」用に36.4 MBのスペースしかないというのは本当ですか(合計64 MB RAMからキャッシュされたスクリプトによって取得されるものを差し引いたもの、つまり27.6 MB)瞬間)?
  • アプリが22.1MBを超えるキャッシュキーをeAcceleratorメモリキャッシュに書き込もうとするとどうなりますか?これにより、私が見たように、eAcceleratorがおかしくなりますか?
  • Eaccelerator.shm_maxを(たとえば)32 MBに等しくなるように変更した場合、この問題を回避できますか?
  • EAcceleratorがshm_maxによって設定されたMB制限を尊重するように、shm_ttlとshm_Prune_periodも変更する必要がありますか?

ありがとう! :-)

2
bobbyh

私はほぼ同じeAccelerator設定を使用しており、同様の問題が発生したことはありません(「キー」設定はありません)。私の知る限り、設定をいじると、キャッシュの効果が変わるかどうかだけが変わります。 「悪い」eAccelerator設定では、スクリプトの実行が遅くなるだけで、スクリプトエラーは発生しません。

「キャッシュキー用の36.4MBのスペース」とはどういう意味かわかりません。あなたの質問から、eAcceleratorは合計49.73 MBを使用しており、スクリプトで27.6MB、キーで22.1MB(27.6 + 22.1 = 49.7)で、14.3MBが空いています。

割り当てられた64MBの制限に達したときの現在の設定では、eAcceleratorは単に何もキャッシュしなくなります。 should一部のスクリプトが実行速度が遅いことを除けば、これによる問題はありません。古いキャッシュエントリを削除したい場合は、前述のようにさまざまな設定で遊ぶことができます。私は通常、eAcceleratorのメモリ量を増やして、すべてのスクリプトをメモリに保持するようにします。

スクリプトに「ホワイトページ」が表示されている場合は、エラーログを再確認します。エラーメッセージが表示されない場合は、エラーログが有効になっていて機能していることを確認します。 eAcceleratorを無効にして、スクリプトエラーを複製できるかどうかを確認します。 eAcceleratorでのみ発生するようであれば、アンインストールして最初からインストールします。

もう1つのリモートの可能性は、キャッシュされたバージョンを破損している不良メモリまたはディスクです。

1
uesp