為什麼 APC(或類似的)會導致共享主機的性能問題?
我正在使用共享主機,但我無法啟用 APC。這裡有一個關於這個的執行緒,建議的唯一原因是為了安全(php-cgi vs mod_php)。我詢問了主機,他們說這是由於性能原因,特別是I / O會導致盒子關閉。我真的不明白 - 使用共享記憶體操作碼記憶體肯定會減少I/O 嗎?基本上,如果我要建立一家共享託管公司(不是我可以!)我會認為使用記憶體(如果安全允許)來提高所有客戶端的性能會很有意義。
任何人都可以為我闡明這一點嗎?TIA
我會說共享主機計劃上的 APC 通常不是一個好主意。
您託管的答案是正確的,但這不是唯一的原因。
當您獲得共享主機時,您應該知道您不是唯一使用託管您網站的伺服器的人。根據託管公司的伺服器,可能有 300 個(或更多)客戶也在該機器上託管他們的網站。
通常這些網站有很多 php 文件。例如,一個joomla 1.6驅動的站點有 ~3000 個 php (~10mb) 文件(包括站點和管理面板)。想像一下,所有這 300 個客戶都在使用 Joomla 平台,並且這些網站是
- 經常光顧
- 生成平均伺服器負載
這意味著所有這些客戶端最終將有 ~900000 個文件被記憶體 - ~3000mb RAM 將僅用於記憶體 php 文件。正如您在 APC 中所知道的,您還可以儲存“使用者記憶體條目”,您通常可以在其中儲存設置或序列化對象。我不能說那裡會有多少 RAM,因為這取決於您儲存的內容,但是讓我們說另一個額外的 50-100mb。
目前我們已經使用了大約 3.1GB 的 RAM。
現在添加一些基本服務執行所需的 RAM - Apache、FTP、PHP、MySQL、PostgreSQL、SendMail 和伺服器備份工具。您最終可能會在 5-6GB RAM 附近的某個地方獲得幾乎永久使用的記憶體。
APC 的其他問題出現在您記憶體時 - 每個人都可以看到您記憶體的內容(據我所知)。所以你可能需要加密你儲存的東西——這將需要更多的 CPU,因為你將一直在加密/解密。此外,如果有人不小心清除了所有記憶體的文件/使用者條目,伺服器會發瘋地嘗試重新記憶體。
底線是沒有系統管理員會經歷 *ss 中的所有痛苦來啟用和支持 APC。這對公司也沒有好處。他們寧願有 300 多個客戶付錢給他們,也不願與 APC 打交道,並且想知道他們的伺服器是否不會出現故障或任何時候都不會出錯。
如果客戶端獲得(託管)專用伺服器,則更好的解決方案是。這樣,客戶端將是唯一在該伺服器上託管站點的人,他可以要求支持在伺服器上安裝他想要的任何東西。這會容易得多,並且可以讓客戶、系統管理員和託管公司免於長白髮 :)
我希望這可以幫助您更好地理解為什麼 APC 不包含在共享主機中。