JVM参数配置的线上教训
原来规则处理业务五十台服务器经常大量fgc,load飙高,我修改了jvm配置后,五十台服务器十多天没有任何异常,双十一中轻闲度过。
可是今天突然又有一台大量fgc,load飙高。分析了半天,回头一看,配置脚本漏推了。唯 一这一台漏推,唯有这一台异常。
因为都是消息处理,处理完消息立即就扔了,集群维护人员把young设置为最大堆的一半:
-Xms4G -Xmx4G -Xmn2G
这样除掉Perm, Old区一定小于2g,虽然大多时候对象在Young区就回收,可是一旦发生对象需要升代,那么Old区就有可能放不下而
发生大量的fgc。并且,非业务的对象可能会占用很大的old区。