Linux
Parallels VM 中令人困惑的記憶體使用情況
我有一個 1GB RAM 的 Parallels VPS。好的,主機說它有 1GB,但我不能將它檢查為“免費”,其他類似的命令返回 13Gb,我猜這是物理記憶體的大小。
當我執行 top 命令時,我看到以下輸出:
如您所見,mysql 是一個使用大量 RAM (143M) 的程序。使用的 RAM 總大小約為 160M。問題是我不能使用更多記憶體:如果我擴展一些記憶體設置(例如,對於 mysql),我會得到“記憶體不足”、“無法分配記憶體”等。
我有兩個猜測:
- 我的 VPS 沒有 1GB 記憶體
- 如果您查看虛擬記憶體使用情況,它更接近 1GB。但同時交換大小為零。那麼我所有的虛擬機都儲存在 RAM 中了嗎?我預計交換是虛擬記憶體和 RAM 使用之間的差異。
任何其他想法如何為 mysql 使用更多記憶體(我想使用大約 80% 的 1Gb)?
你有一個 Virtuozzo(或 OpenVZ)VPS——通常的記憶體分配規則不適用。假設您的託管服務提供商沒有對您撒謊,那麼您“擁有”1GB RAM,只要 OpenVZ“管理程序”允許您分配 1GB 記憶體,或者(更可能的是,根據您對事件的描述)1GB虛擬記憶體記憶。
僅僅因為您在頂部看不到任何交換,並不意味著您的所有數據都在物理記憶體中——OpenVZ 的規則不同(非常非常不同)。
如果您想為 MySQL 使用更多記憶體,那麼您必須減少 VM 中其他事物正在使用的記憶體量。您的頂級輸出沒有列出任何明顯的競爭者,但如果您按記憶體使用情況對其進行排序,您將更好地了解什麼是多餘的(並且會給您帶來最大的收益)。
順便說一句,我建議遠離您目前的託管服務提供商——雖然 OpenVZ 有它的位置,但那個位置不在 VPS 託管市場中。您可能選擇它們是因為它們是一個便宜的供應商,但您正在了解它們為什麼便宜——OpenVZ 是一個非常受限制的平台,它有一套相當奇特的怪癖。使用“真正的”VPS 提供商(使用 Xen、KVM、VMWare 等的人)會更好。