Linux

APC 文件記憶體不起作用,但使用者記憶體很好

  • October 20, 2013

我剛剛獲得了一個 VPS(帶有 cPanel/WHM)來測試使用 apc 文件記憶體和使用者記憶體可以在我的應用程序中獲得什麼收益。

因此,首先我將 PHP 5.3 編譯為 DSO(apache 模組)。

然後通過 SSH 通過 PECL 安裝 APC。(首先我嘗試使用 WHM 模組安裝程序,它也有同樣的問題,所以我通過 ssh 嘗試了它)

一切似乎都很好,phpinfo 顯示 apc 已載入並啟用。

然後我檢查了apc.php。一切似乎都很好

但是當我開始測試我的 php 應用程序時,apc 中文件記憶體資訊狀態的統計資訊:記憶體文件 0(0.0 字節)

命中 1未

命中 0

請求率(命中、未命中)0.00 記憶體請求/秒

命中率 0.00 記憶體請求/秒未

命中速率 0.00 記憶體請求/秒

插入速率 0.00 記憶體請求/秒

記憶體滿計數 0

這意味著沒有 PHP 文件被記憶體,即使我瀏覽了 10 多個包含多個包含的 PHP 文件。所以肯定有一些記憶體文件。

但是使用者記憶體執行良好。

使用者記憶體資訊

記憶體變數 0(0.0 字節)

命中 1000未

命中 1000

請求率(命中、未命中) 0.84 記憶體請求/秒

命中率 0.42 記憶體請求/秒 未命中率 0.42 記憶體

請求/秒

插入率 0.84 記憶體請求/秒

記憶體滿計數0

它實際上來自一個 APC 記憶體測試腳本,它試圖檢索和儲存 1000 個條目並給我時間。一種簡單的基準。

有人能幫我一下嗎。

即使 apc.cache_by_default = 1,也不會記憶體任何 php 文件。

這是我的 apc 配置

執行時設置

apc.cache_by_default 1

apc.canonicalize 1

apc.coredump_unmap 0

apc.enable_cli 0

apc.enabled 1

apc.file_md5 0

apc.file_update_protection 2

apc.filters

apc.gc_ttl 3600

apc.include_once_override 0

apc.lazy_classes 0

apc.lazy_functions 0

apc.max_file_size 1M

apc.mmap_file_mask

apc.num_files_hint 1000

apc.preload_path

apc.report_autofilter 0

apc.rfc1867 0 apc.rfc1867_freq 0

apc.rfc1867_name APC_UPLOAD_PROGRESS

apc.rfc1867_prefix upload_apc6.rfc1867_prefix

upload_apc.rfc1867

apc.serializer 預設

apc.shm_segments 1

apc.shm_size 32M

apc.slam_defense 1

apc.stat 1

apc.stat_ctime 0

apc.ttl 0

apc.use_request_time 1

apc.user_entries_hint 4096

apc.user_ttl 0

apc.write_lock 1

此外,大多數 php 文件都在 20KB 以下,因此 apc.max_file_size = 1M 不是原因。

我也嘗試過使用’apc_compile_file’來強制一些文件進入操作碼記憶體,但沒有成功。我還重新安裝了啟用調試的 APC,但 error_log 中沒有顯示

我也嘗試將 mmap_file_mask 設置為 /dev/zero 和 /tmp/apc.xxxxxx,我也將 /tmp 權限設置為 777 無濟於事

任何線索任何人。

更新:我嘗試了以下操作,但沒有一個會導致 APC 文件記憶體填充

  1. 設置 apc.enable_cli = 1 並從 cli

  2. 設置 apc.max_file_size = 5M (以防萬一)

  3. 將 php 處理程序從 dso 切換到WHM 中的 FastCGI(然後將其切換回 dso,因為它沒有解決問題)

  4. 甚至嘗試重新啟動容器

看來問題出在 SourceGuardian 上。

從 php.ini 註釋掉 extension=“ixed.5.3.lin” 後,文件記憶體現在工作正常。

它是由我的託管服務提供商的支持人員發現的,因此對如此強大的支持表示讚賞。我不會發現這個問題好幾天了。

思想應該發布答案,以防其他人偶然發現這個問題。

引用自:https://serverfault.com/questions/308619