降低 ruby memory 使用量
由於在 vps 上 memory 有限, 所以最近在處理 ruby instance 吃記憶體. 以我們現在 web server 一個吃 50m, worker 吃 35~50m, 其他的 queue 只吃 1x m. 在 aws small 上能開 1x 個 instance. 一個 instance 因為 eventmachine 架構, 本身就能 concurrent. 10 個 instance 的 concurrent 算是能表現得很不錯.
幾個降低 ruby memory 使用量的方式 : 1. 慎選 ruby gem, 有些 gem 一 load 就吃掉 1xm. 比如 fog, 吃 16m. 2. 少用 symbol. 因為 symbol 一旦宣告就存在. 3. 少用 constant. 同 symbol. 4. 注意是否有無限回圈吃掉 memory. 5. 注意 close connection 和 max concurrent, 比如 mysql. 6. 最後是調整 linux kernel & ruby source.
基本上我認為任何一個 instance 大過於 100m 都是不太正常的. require eventmachine 也才 11m, 加一些零零散散的也才 50m. 比較大型專案也許到 80~90m. 超過 100m 的 instance 應該都需要分拆出來才對.

















