現象:在分佈式部署時,單個服務的虛擬機不斷變大,直到內存被用的所剩無幾,然後出現各種各樣的異常
解決思路:優化虛擬機堆的空間大小,根據實際物理內存的大小進行比例分配,並且,堆不進行自動擴展。然後使用ParNew+CMS進行垃圾回收,在多線程高併發的情況下,表現很好
export CATALINA_OPTS="$CATALINA_OPTS -Xms3000m" //堆初始值
export CATALINA_OPTS="$CATALINA_OPTS -Xmx3000m" //堆最大值export CATALINA_OPTS="$CATALINA_OPTS -XX:MaxPermSize=256m" //Java虛擬機永久代大小最大值
export CATALINA_OPTS="$CATALINA_OPTS -Xmn512m" //堆最小值
export CATALINE_OPTS="$CATALINA_OPTS -XX:+UseConcMarkSweepGC" //使用CMS垃圾收集器
export CATALINA_OPTS="$CATALINA_OPTS -XX:+UseParNewGC" //使用parallel New垃圾收集器