Linux

Debian VPS 中奇怪的記憶體峰值

  • August 17, 2016

我執行一個中型 VPS(4GB RAM)作為 Web 伺服器。我使用 Apache 和 mod_passenger 託管一些私有 Ruby on Rails 站點。我還有兩個使用“獨立乘客”執行的遺留應用程序(兩個 Nginx 伺服器,埠 3000 和 4000 上有乘客)。Apache 充當這些代理。

大多數情況下,這是可以正常工作的,但每隔幾個月整個系統就會發瘋:

  • RAM 使用率高達 100%
  • 日誌文件充滿“無法分配記憶體”和反向代理錯誤
  • 很快整個系統就沒有反應了

有時這會自行解決,有時我不得不要求我的提供商重新啟動系統,因為我什至無法通過 SSH 進入它。

總是發生在晚上,當流量非常低時。下面是兩張圖:

Apache 訪問

在此處輸入圖像描述

記憶體消耗

在此處輸入圖像描述

**我該如何深究?**我可以採取哪些步驟來調試這種情況?是否有可能我的機器上有一個壞鄰居?

主要機器上的其他程序:MySQL、PostgreSQL、Elasticsearch、Redis

更新澄清

我正在尋找一種工具來記錄程序及其記憶體和 cpu 消耗,以便我可以追踪麻煩製造者。那裡有類似的東西還是我必須自己動手?

根據我管理 RoR 應用程序的個人經驗,記憶體洩漏很容易蔓延,並且可以在大多數意想不到的時間抓住你。我建議做兩件事來抓住罪魁禍首:

  1. 使用sar記錄系統活動。
  2. 由於記憶體是特定的目標,如果門檻值超過您選擇的某個限制,請free | grep "Mem:" | awk '{print $4}'使用並向您自己發送郵件。mailx

通常有一個錯誤的 sql 查詢或一個 rouge gem 會導致這種情況。如果最近在這些方面發生了任何變化,那麼您可能也想調查一下。

引用自:https://unix.stackexchange.com/questions/107495