私はかなり長い間これで遊んできましたが、何をすべきかについて少し途方に暮れています。PHP 5.2.5 を搭載した CentOs 5 で APC 3.1.3p1 を使用しています。APC は、オペコード キャッシュとユーザー キャッシュの両方として機能します。ほとんどの場合、このサーバーは、APC キャッシュ サポート用の CacheRouter モジュールを使用して Drupal 6 サイトを実行します。私はしばらくの間 APC 3.0.19 を実行していましたが、時折 Apache がロックアップする原因となっていたため (そのバージョンの APC で文書化されたバグ)、3.1.3p1 を使用しているのはそのためです。
512 MB のメモリ (mmap) を持つように APC を構成しました。
症状は少し断続的ですが、空のキャッシュから開始すると、一般的に次のように表示されます。
ユーザー キャッシュはかなりゆっくりといっぱいになります。最初の挿入レートは 20,000 挿入/秒程度ですが、ユーザー キャッシュは数百、次に数千のエントリしか報告せず、非常にゆっくりと成長します。これは write_locking がオンになっていることに起因する可能性がありますが、目前の問題を解決する上で重要な場合に備えて言及したいだけです。数時間後、約 30k エントリの平衡に達します。
断片化は早期に始まり、急速に成長します。おそらく 10 時間ほどで、通常は 100% の断片化になります。
全体的な (オペコード + ユーザー) キャッシュの使用量は、約 240MB で安定しています。そのレベルを超えることはほとんどありません。1 日ほどすると、ユーザー キャッシュ キャッシュ フル カウント (UCCFC) が増加し始めます。
これを書いている時点で、私の UCCFC は 62358 で、APC が 280MB の空き容量を報告しているにもかかわらず、増加しています。私は 7200 の user_ttl を持っていますが、それを 0 または他の量に設定して遊んだこともあり、問題にはほとんどまたはまったく影響しません。
問題は断片化に関係していると思われます。現在、私のサーバーは「断片化: 100.00% (24740 個のフラグメントで 280.0 MB のうち 280.0 MB)」と報告しており、APC が報告している空き容量はたまたま 280 MB です。偶然だと思います。残念ながら、ドキュメントやその他の場所で、APC の世界で「断片化」が本当に何を意味するのかを示す貴重な情報を見つけましたが、それを回避するためにできることはほとんどないようです。
誰でもこの問題に光を当てることができますか?