xms/xmx/xss在kette中的調優設置

kettle是使用java開發的,主要運行在jvm上,這樣它的執行效率就和jvm的調優有關了,我在平時的使用中,主要是用kitchen.sh(其實其它的*.sh也是同樣的),在默認的狀況下內存的使用配置是這樣的java

# ******************************************************************
# ** Set java runtime options                                     **
# ** Change 512m to higher values in case you run out of memory   **
# ** or set the PENTAHO_DI_JAVA_OPTIONS environment variable      **
# ** (JAVAMAXMEM is there for compatibility reasons)              **
# ******************************************************************

if [ -z "$JAVAMAXMEM" ]; then
  JAVAMAXMEM="512"
fi

if [ -z "$PENTAHO_DI_JAVA_OPTIONS" ]; then
    PENTAHO_DI_JAVA_OPTIONS="-Xmx${JAVAMAXMEM}m"
fi

爲了能讓kettle更好的運行,我修改爲了這樣jvm

# ******************************************************************
# ** Set java runtime options                                     **
# ** Change 512m to higher values in case you run out of memory   **
# ** or set the PENTAHO_DI_JAVA_OPTIONS environment variable      **
# ** (JAVAMAXMEM is there for compatibility reasons)              **
# ******************************************************************

if [ -z "$JAVAMAXMEM" ]; then
  JAVAMAXMEM="16384"
fi

if [ -z "$PENTAHO_DI_JAVA_OPTIONS" ]; then
    PENTAHO_DI_JAVA_OPTIONS="-Xms${JAVAMAXMEM}m -Xmx${JAVAMAXMEM}m -Xss1024m"
fi

能夠看到,首先我加大了xmx,其次我添加了xms和xss,這是爲何呢?xss

將xms調整到與xmx同樣,是爲了讓jvm在GC後,不要再進行內存分配,直接使用指定的值,這樣省去了計算並分配內存的時間,而添加xss是爲了讓kettle在單次Job中執行更多更深刻的循環,若是沒有大的循環能夠不用配置xss,由於jvm在起線程的時候每一個線程都會分配xss指定大小的內存,也就是說xss越大,可用的線程就越少,這點是須要注意的!優化

修改完成後,從內存的監控圖中能夠看出,內存的分配和回收所造成的圖形是相似"WW"形的,直上直下,執行時間也明顯的比修改前少了。線程

好了,就先到這兒,若是還有其它方面的優化,我會再和你們分享的。
code

相關文章
相關標籤/搜索