Php

集群環境中的記憶體

  • July 25, 2011

出於多種原因,在應用程式碼中記憶體數據通常是一個好主意。在包括 ColdFusion、.NET 和 PHP 在內的共享環境中,我們已經安靜地這樣做了一段時間。但是,由於我們與組織中的許多其他開發團隊共享此環境,因此停機時間比我們(或我們的客戶)所欣賞的要多得多。

因此,我們的網路管理員正在著手實施一個新環境。在這種環境中,他們在目前的 Dev 和 Prod 環境之間添加了一個 QA 級別。此外,為了增加正常執行時間,它們在 QA 和 Prod 級別都對機器進行集群。

這一切都很好,原因有很多。我發現問題的一個領域是記憶體。將有兩組(或更多,取決於節點的數量)記憶體集。可以想像,這會產生以下潛在問題。節點 A 和 B 上的記憶體相同。使用者 1 更新數據,因此在節點 A 上更新記憶體。使用者 2 來查詢數據但在節點 B 上,因此獲取舊數據。

他們有關於如何處理這個問題的最佳實踐嗎?

我可以在我的程式碼中進行任何類型的更改嗎?

是否有可以實施的伺服器設置?

您沒有確切說明正在記憶體什麼或如何記憶體,所以我們將在黑暗中拍攝一點。

典型的集群記憶體解決方案將確保集群的所有成員都擁有一致的數據視圖。例如,memcached是應用程序數據記憶體的常用解決方案,來自一個集​​群成員的更新將立即對其他集群成員可見。

如果您正在記憶體生成的網頁,解決方案通常是僅記憶體不變或具有明確定義的過期時間的數據。每個請求不同的數據通常不會被記憶體。這為 Web 應用程序帶來了性能提升,因為對圖像、樣式表和 javascript 等常見項目的提取可以來自記憶體,而自定義使用者 HTML 則從後端提取。或者,如果用於生成頁面的數據已更改,某些解決方案可以使記憶體無效。

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