Apache-2.2
Docker + Apache,記憶體使用如何工作?
假設我有一個 docker 主機,其中設置了 50 個容器,每個容器執行一個由 Apache 提供服務的站點。
據我了解,每個容器都會執行一個 Apache 實例,並且通常每個 Apache 實例使用每個 ram 約 250mb。然後 Apache 每個子程序需要幾 mb。
我假設每個容器都需要完整 Apache 實例的記憶體是否正確?例如。50 個站點需要 50 x ~300mb?
或者 Apache 是否能夠在容器之間共享部分記憶體以提高記憶體效率?
Docker 是否適合高效的“大規模”託管(例如,每個站點都需要少量資源的大量站點),其中每個站點都是一個容器?或者只有一個 Apache 容器服務於 50 個站點是否可行?
docker 提供了 apache 實例之間的隔離,這可能有很多原因(例如,如果每個網站由不同的使用者管理),它還允許在另一台伺服器上輕鬆地重新定位實例。如果您不需要它,那麼僅使用一個 Apache 實例可能會獲得更好的性能。
隔離意味著資源使用將與使用虛擬機非常相似,只是您無需支付虛擬化成本、記憶體分區成本和作業系統成本。話雖如此,Apache 的記憶體使用應該主要取決於伺服器負載,因此如果將大型伺服器拆分為許多小型伺服器,您不應期望增加十倍。此外,由於只有一個核心,磁碟記憶體在容器之間共享,因此如果兩個實例之間的磁碟訪問模式相似,您將獲得一點性能提升。