Apache-2.2

VPS 吃記憶體?

  • December 17, 2011

我有一個帶有 512MB RAM 和 TelVPS 的 1GB Burst 的 VPS。VPS 沒有交換空間。

我與我的服務提供商討論過這個問題,但他們說他們不為 VPS 提供交換空間,我可以添加自己的 SWAP 空間嗎?

我有以下設置:

  • Apache2/乘客
  • Ruby on Rails 2,3
  • MySQL
  • 發送郵件。

我有 3 個 rails 應用程序正在執行,但它們是測試應用程序,流量很低甚至沒有。

topVPS 控制面板顯示我的系統正在使用大約 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 gem solr)正在消耗記憶體。有一些選項可以限制太陽黑子的記憶體使用。

2)。交換空間

按照湯姆接受的答案中的步驟。

關於記憶體使用情況,您可能可以直接做所有事情。Ruby on Rails 需要大量記憶體,尤其是當它的 ORM 建構深度對象的遞歸 ActiveRecord 時。Apache 也不是特別輕量級。

您可能想使用MySQL Tuner並查看數據庫在使用高峰時竊取了多少 RAM(表記憶體、查詢記憶體、連接池)。

事後添加交換很容易,但可能會非常慢。尤其是大多數 VPS 都處於過度使用、功率不足的 IO 後端。

讓我們製作一個 512MB 的交換文件

  1. dd if=/dev/zero of=/swapfile1 bs=1024 count=524288 這會在 /swapfile 中創建一個 512MB 的稀疏文件
  2. mkswap /swapfile1 這會將其格式化以供交換使用
  3. swapon /swapfile1 這告訴核心將其用於交換
  4. vim /etc/fstab 編輯 Fstab,然後
  5. /swapfile1 swap swap defaults 0 0 將此行附加到文件的底部,以便在重新啟動時再次安裝相同的交換分區。

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