停用或刪除 APC

停用或刪除 APC

我對 PHP APC 快取系統感到非常沮喪,我想從我的伺服器中完全刪除/停用它。我在 Debian Squeeze 上使用安裝了 Nginx 的 PHP,有什麼方法可以做到這一點嗎?

答案1

而不是刪除 APC,這會導致大量的性能受到打擊,實際上是搬起石頭砸自己的腳。

試試這個:在 /etc/php5/conf.d/apc.ini 中:

extension=apc.so
apc.shm_size=128M
apc.shm_segments=1
apc.max_file_size=5M
apc.num_files_hint=10000
apc.slam_defense = 0
apc.write_lock=1

如果您有足夠的可用 RAM,則可以增加到apc.shm_size大於 128 的值,例如 512。

我在我運行的伺服器上執行此操作,但從未見過無法為池分配記憶體錯誤。

答案2

刪除/opt/php5/etc/conf.d/apc.ini或註解其中的所有行;。之後不要忘記重新啟動您的網頁伺服器。

另請檢查“/etc//php5/apache2/php.ini”中的“extension=apc.so”以進行註解。

如果你還有資源,你可以嘗試make uninstall稍後再做。我不知道 makefile 是否包含這個目標。

答案3

如果除了 Squeeze 提供的功能之外您沒有安裝其他東西,那麼簡單的操作apt-get remove php-apc就可以解決問題。

答案4

解決方案是增加分配給APC的記憶體。

使用 TTL 為 0 表示 APC 在記憶體不足時將刷新所有快取。該錯誤不再出現,但它使 APC 的效率大大降低。這是一個沒有風險、沒有麻煩、「我不想做我的工作」的決定。 APC 不應該這樣使用。您應該選擇足夠高的 TTL,以便最常造訪的頁面不會過期。最好是提供足夠的內存,這樣 APC 就不需要刷新快取。

只需閱讀手冊即可了解 ttl 的使用方式:http://www.php.net/manual/en/apc.configuration.php#ini.apc.ttl

您可以透過增加 apc.shm_size 來增加分配的記憶體。

如果 APC 被編譯為使用共享段內存,您將受到作業系統的限制。鍵入以下命令以查看每個段的系統限制:

sysctl -a | grep -E "shmall|shmmax"

要分配更多內存,您必須使用參數 apc.shm_segments 增加段數。

如果 APC 使用 mmap 內存,則沒有限制。內存量仍然由相同的選項 apc.shm_size 定義。

如果伺服器上沒有足夠的內存,則使用過濾器選項來防止快取不常存取的 php 檔案。

但切勿使用 TTL 0。

使用 apc.php 檢查您的設定。您將看到實際分配的內容以及如何使用它。圖表必須在數小時後保持穩定,如果它們在每次刷新時完全改變,則表示您的設定是錯誤的(APC 正在刷新所有內容)。分配比 APC 實際使用的 20% 作為安全裕度,並定期檢查。

預設只允許 32MB,這個值低得離譜。 PHP 是在伺服器大小為 64MB 並且大多數腳本每頁使用一個 php 檔案時設計的。如今,像 Magento 這樣的解決方案需要超過 10k 個檔案(在 APC 中約為 60Mb)。您應該留出足夠的內存,以便大多數 php 檔案始終被緩存。這不是浪費,將操作碼保存在 RAM 中比將相應的原始 php 保存在檔案快取中更有效。如今,我們可以以低至 150 美元的價格找到具有 24Gb 內存的專用伺服器,因此請毫不猶豫地為 APC 提供幾 GB 內存。我將 24GB 中的 2GB 放在託管 5Magento 商店和約 40 個 WordPress 網站的伺服器上,APC 使用 1.2GB。 Magento 安裝需要 64MB,有一些外掛程式的 Wordpress 安裝需要 20MB。

相關內容