Tomcat 簡單配置(JAVA8 VM Args)

    Tomcat用了two years+,沒有深究過配置信息,只是簡單的改改端口,最近在搭建測試Server的時候,單機有四個Tomcat實例,發現8G的內存不知不覺的就被用完了,甚至是20G的硬盤都被一次意外吃完了,內存是由於Tomcat中添加了最大內存2G最小1G,硬盤是由於Jenkins的Tomcat出現大量異常,打印了10+G的log(contains catalina.out),後來去掉內存設置,感受當時內存倒是少了很多,Tomcat的自帶日誌也直接關閉,後來日誌打印是正常關閉了,可是內存,仍是認爲偏高,由於是測試,因此對性能要求不是很高,後來開始瞭解Tomcat的參數配置,網上的信息太繁雜,沒有獲得一個滿意的answer,另外,其實我的比較偏向於官方的默認配置,並且網上的資料大都是人云亦云,就簡單的JAVA_OPTS/CATALINA_OPTS配置來講,網上都說添加配置到catalina.sh,可是與Tomcat官方的說法,有兩點出入(${CATALINA_HOME}/html

RUNNING.txtjava

):
spring

0配置信息添加到${CATALINA_HOME}/bin/setenv.shmvc

1不推薦使用JAVA_OPTS,由於stop等命令也會使用該配置,應使用CATALINA_OPTSoracle

另外關閉Tomcat的自帶日誌,經過spring mvc的interceptor來記錄RuntimeException,避免丟失未捕獲的異常紀錄。jvm


    JAVA VM args:-server性能

0查看默認參數:測試

$ java -XX:+PrintFlagsFinal -version 2>&1 | grep -i -E 'heapsize|permsize|version'
uintx AdaptivePermSizeWeight               = 20               {product}
uintx ErgoHeapSizeLimit                    = 0                {product}
uintx InitialHeapSize                     := 66328448         {product}
uintx LargePageHeapSizeThreshold           = 134217728        {product}
uintx MaxHeapSize                         := 1063256064       {product}
uintx MaxPermSize                          = 67108864         {pd product}
uintx PermSize                             = 16777216         {pd product}
java version "1.6.0_24"

$ java -client -XX:+PrintFlagsFinal -version 2>&1 | grep -i -E 'heapsize|permsize|version'
uintx AdaptivePermSizeWeight               = 20               {product}
uintx ErgoHeapSizeLimit                    = 0                {product}
uintx InitialHeapSize                     := 16777216         {product}
uintx LargePageHeapSizeThreshold           = 134217728        {product}
uintx MaxHeapSize                         := 268435456        {product}
uintx MaxPermSize                          = 67108864         {pd product}
uintx PermSize                             = 12582912         {pd product}
java version "1.6.0_24"


    經過JMC查看Tomcat運行的內存佔用,如圖:
ui

    JAVA8後,內存結構發生變化,具體的暫時沒有進行調研,走一個簡單的記錄,分別對應以下參數:
spa

-Xmx768M -Xms768M 設定初始化和最大的Heap
-XX:ReservedCodeCacheSize=128M 設定Code Cach
-XX:MaxMetaspaceSize=128M 設定Metaspace
-XX:CompressedClassSpaceSize=256M 設定Compressed Class Space

    具體參數的大小與性能的影響,暫時不肯定,待更新




    PS:default-jvm-and-java-arguments

相關文章
相關標籤/搜索