Apache-2.2
VPS 吃記憶體?
我有一個帶有 512MB RAM 和 TelVPS 的 1GB Burst 的 VPS。VPS 沒有交換空間。
我與我的服務提供商討論過這個問題,但他們說他們不為 VPS 提供交換空間,我可以添加自己的 SWAP 空間嗎?
我有以下設置:
- Apache2/乘客
- Ruby on Rails 2,3
- MySQL
- 發送郵件。
我有 3 個 rails 應用程序正在執行,但它們是測試應用程序,流量很低甚至沒有。
top
VPS 控制面板顯示我的系統正在使用大約 880MB 的 RAM。但是程序列表結果top
沒有顯示任何程序佔用記憶體。我已閱讀http://www.linuxatemyram.com/。但以下是輸出free -m
root@serveme:/var/www# free -m total used free shared buffers cached Mem: 1024 819 204 0 0 0 -/+ buffers/cache: 819 204 Swap: 0 0 0
我對這種情況有兩個問題:
1)。如何解決記憶吞噬問題?(如果需要更多資訊,請告訴我)
2)。我可以添加 SWAP 空間嗎?如果是,如何?設置系統後添加交換空間是否安全?
編輯:
1)。記憶體:我
ps -axu --sort -rss | head -n 10
按照 Fox 的建議執行(在評論中),我發現我的sunspot
(基於 的全文搜尋的 rails gemsolr
)正在消耗記憶體。有一些選項可以限制太陽黑子的記憶體使用。2)。交換空間
按照湯姆接受的答案中的步驟。
關於記憶體使用情況,您可能可以直接做所有事情。Ruby on Rails 需要大量記憶體,尤其是當它的 ORM 建構深度對象的遞歸 ActiveRecord 時。Apache 也不是特別輕量級。
您可能想使用MySQL Tuner並查看數據庫在使用高峰時竊取了多少 RAM(表記憶體、查詢記憶體、連接池)。
事後添加交換很容易,但可能會非常慢。尤其是大多數 VPS 都處於過度使用、功率不足的 IO 後端。
讓我們製作一個 512MB 的交換文件
dd if=/dev/zero of=/swapfile1 bs=1024 count=524288
這會在 /swapfile 中創建一個 512MB 的稀疏文件mkswap /swapfile1
這會將其格式化以供交換使用swapon /swapfile1
這告訴核心將其用於交換vim /etc/fstab
編輯 Fstab,然後/swapfile1 swap swap defaults 0 0
將此行附加到文件的底部,以便在重新啟動時再次安裝相同的交換分區。