HYL 積分 0

岔題,很久很久前,我們單位的習慣是,既使是有 8GB Ram 的機器,仍是留了一半的空間給 OS 來調用,只有 4GB 是給 JVM 用。

不知道大家的習慣是?

這是文章的子討論串,你可以回到上層查看所有討論和文章
qrtt1 積分 2

我比較習慣看峰值的剩餘空間,希望 OS 至少還有 1GB 能用比較安心,不然記憶體用多的程式可能會遇上 kernel 的 oom killer 就麻煩了。

IngramChen 積分 3

我們以前部署的機器,15GB ram ,我的 JVM heap 就開 14GB,留 1GB 給 OS,結果十幾台主機一週就當個二、三個 jvm。一開始以為踩到 JVM bug,造成 segment fault (畢竟沒有開過 1xGB heap 過,怕怕),查到最後才發現是 OOM killer 會殺。這就很納悶了,不是已經留 1GB 給 OS 了?後來調降到 12 GB 後就再也沒發生過了。

原因沒有詳查,但多半是服務太大,所以 OS 會需要更多的資源 (socket...etc)

所以你講到重點了,是 峰值的剩餘空間 後,還保留個 1GB 左右是安全值,尤其是配置大量的 JVM heap。以前傻傻的直接用硬體 ram 去估算做不得準啊。

qrtt1 積分 2 編輯於

美中不足的是要爆幾次後反覆調整才知道讓把峰值放在哪。

以前比較「擠」的是候是 Tomcat 跟 MySQL 放同一台,oom killer 要殺哪一個還不一定,實在太刺激了。乾脆就讓 Tomcat 獨立到其它台(剛好建 2 台套上 LB 可以做輪流更新程式。)

koji 積分 2

我以前自己管的大概都留三分之一,但沒特別比較過。

IngramChen 積分 0

看主機上有沒有其他服務,如果沒有的話大部份都會配給 JVM,除非已經知道該服務是 I/O heavy,需要大量 OS disk cache。

不過我沒有配置過 16GB 以上的 JVM heap 了,聽說到了這個階段 garbage collection 就很難調了 (指 hotspot jvm),很多服務到這階段就會開始拆 server,而不是硬撐 vertical scale up 上去。

qrtt1 積分 1 編輯於

其實不要開太大還有個好處是 memory leak 時,能夠及早發現及早治療。萬一是爆在 1x GB 把 memory dump 出來要用 mat1 來看誰是兇手也很麻煩。