8

PHP 5.5 オペコード キャッシュを使用しているとします。

opcache.memory_consumption=128

php-fpm に 4 つのプールがある場合、4 つのプールはそれぞれ 128MB のキャッシュを共有しますか、それともプールごとに 128M の opcache を所有しますか?

4

3 に答える 3

6

プール間で使用されるキャッシュメモリがどのように簡単なテストになるかについて疑問がある場合。

テクニックは非常に簡単です。たとえば、8081 および 8082 ポートをリッスンする異なる www-dir に 2 つの fpm-pools を作成し、2 つのファイルindex.phpおよびcheck.phpを同じ内容で作成します。

<?php
echo "<pre>\n";
var_dump(opcache_get_status());

最初に php-fpm サービスを再起動してから、最初に pool を実行しlocalhost:8081/index.php、次にlocalhost:8082/check.php. 出力のこのチェック["scripts"]セクションの後。次の結果が得られました。

ローカルホスト:8081/index.php

["scripts"]=>
  array(1) {
    ["/usr/share/nginx/html/index.php"]=>
    array(6) {
      ["full_path"]=>
      string(31) "/usr/share/nginx/html/index.php"
      ["hits"]=>
      int(0)
      ["memory_consumption"]=>
      int(1032)
      ["last_used"]=>
      string(24) "Mon Dec 23 23:38:35 2013"
      ["last_used_timestamp"]=>
      int(1387827515)
      ["timestamp"]=>
      int(1387825100)
    }
  }

ローカルホスト:8082/check.php

["scripts"]=>
  array(2) {
    ["/usr/share/nginx/html1/check.php"]=>
    array(6) {
      ["full_path"]=>
      string(32) "/usr/share/nginx/html1/check.php"
      ["hits"]=>
      int(0)
      ["memory_consumption"]=>
      int(1056)
      ["last_used"]=>
      string(24) "Mon Dec 23 23:38:47 2013"
      ["last_used_timestamp"]=>
      int(1387827527)
      ["timestamp"]=>
      int(1387825174)
    }
    ["/usr/share/nginx/html/index.php"]=>
    array(6) {
      ["full_path"]=>
      string(31) "/usr/share/nginx/html/index.php"
      ["hits"]=>
      int(0)
      ["memory_consumption"]=>
      int(1032)
      ["last_used"]=>
      string(24) "Mon Dec 23 23:38:35 2013"
      ["last_used_timestamp"]=>
      int(1387827515)
      ["timestamp"]=>
      int(1387825100)
    }
  }

ご覧のとおり、2 番目のプールには既にキャッシュにindex.phpがあるため、答えは4 つのプールすべてが 128 MB のキャッシュを共有するということです。

于 2013-12-23T19:24:46.680 に答える
1

リンクを通じてraina77owが述べたように、128 MBが4つのプール間で共有されます

それに加えて、公式ドキュメントに記載されているように

; Sets how much memory to use
opcache.memory_consumption=128

opcache.memory_consumptionは、使用するプールの数に関係なく使用されるメモリ制限を設定し、それに応じて共有されます。

于 2013-12-23T18:31:44.833 に答える
0

OpCache は基本的に APC と同じように機能し (プリコンパイル済みスクリプト バイトコードを共有メモリに格納することにより) 、同じマスター プロセスによって開始された場合、APC オペコード キャッシュは php-fpm プール間で共有されることが確認されています。 4つのプール間でも共有されます。

于 2013-12-19T12:37:49.733 に答える