您好,登錄后才能下訂單哦!
這篇文章主要講解了“如何解決Ruby當中常見的內存使用問題”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“如何解決Ruby當中常見的內存使用問題”吧!
Ruby語言當中最為常見的就是內存使用問題,這一點在其它基于JVM的語言中亦頗為普遍(是的,Java,說的就是你)。事實上,Ruby的垃圾回收(簡稱GC)機制與Java非常接近。如果使用不當,其會帶來巨大的麻煩(正如下圖所示)。在這類情況下,GC會停止運作,同時消耗服務器的整體CPU資源,甚至導致服務器重啟。
Unicorn與Ruby內存泄露導致服務器宕機。
如何解決?
一、定期重啟您的Ruby
如果大家使用的是高人氣Unicorn Web服務器,那么內存問題可能會更加嚴重——這是因為Unicorn采用fork機制。在fork過程中,其會對全部父內存內容進行復制(簡稱CoW)。因此,大家可能需要使用“Unicorn Worker Killer” gem以監控服務器并在內存達到新高點或者請求數量增加至一定水平時進行重啟。由于該gem支持隨機化,因此服務器本身很可能并不會受到影響。
二、安裝此 killer:
三、調整內存
如果大家使用的是Ruby 2.X版本,則可通過配置Unicorn更好地使用CoW機制。
config/unicorn.rb
1)worker_processes: 1x 計算核心
2)timeout: 工作請求超時,應設定在15到30秒區間
3)preload_app: 啟用CoW,但要求在fork上管理連接/斷開
四)認真考慮GC配置
動態語言存在著一定短板,然而正確的設計卻能幫助其始終在線且順暢運行。
感謝各位的閱讀,以上就是“如何解決Ruby當中常見的內存使用問題”的內容了,經過本文的學習后,相信大家對如何解決Ruby當中常見的內存使用問題這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。