<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    The NoteBook of EricKong

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      611 Posts :: 1 Stories :: 190 Comments :: 0 Trackbacks

    1.內存設置(VM參數調優)
    (1). Windows環境下,是tomcat解壓版(執行startup.bat啟動tomcat) ,解決辦法:
    修改“%TOMCAT_HOME%\bin\catalina.bat”文件,在文件開頭增加如下設置:
    set JAVA_OPTS=-Xms512m -Xmx512m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=512m
    備注:一定加在catalina.bat最前面。
    (2). Windows環境下,是tomcat安裝版(利用windows的系統服務啟動tomcat),解決辦法:
    修改注冊表HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Procrun 2.0\Tomcat6\Parameters\JavaOptions
    原值為:
    -Dcatalina.home=E:\Tomcat 6.0
    -Dcatalina.base=E:\Tomcat 6.0
    -Djava.endorsed.dirs=E:\Tomcat 6.0\common\endorsed
    -Djava.io.tmpdir=E:\Tomcat 6.0\temp
    -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
    -Djava.util.logging.config.file=E:\Tomcat 6.0\conf\logging.properties
    加入:
    Xms512m -Xmx512m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=512m
    重起tomcat服務,設置生效。
    (3). Linux環境下, ,解決辦法:
    修改“%TOMCAT_HOME%\bin\catalina.sh”文件,在文件開頭增加如下設置:JAVA_OPTS=’-Xms256m -Xmx512m’

    各參數詳解:
    -Xms:設置JVM初始內存大小(默認是物理內存的1/64)
    -Xmx:設置JVM可以使用的最大內存(默認是物理內存的1/4,建議:物理內存80%)
    -Xmn:設置JVM最小內存(128-256m就夠了,一般不設置)

    默認空余堆內存小于 40%時,JVM就會增大堆直到-Xmx的最大限制;空余堆內存大于70%時,JVM會減少堆直到-Xms的最小限制。因此服務器一般設置-Xms、 -Xmx相等以避免在每次GC 后調整堆的大小。
    在較大型的應用項目中,默認的內存是不夠的,有可能導致系統無法運行。常見的問題是報Tomcat內存溢出錯誤“java.lang.OutOfMemoryError: Java heap space”,從而導致客戶端顯示500錯誤。

    -XX:PermSize :為JVM啟動時Perm的內存大小
    -XX:MaxPermSize :為最大可占用的Perm內存大小(默認為32M)
    -XX:MaxNewSize,默認為16M

    PermGen space的全稱是Permanent Generation space,是指內存的永久保存區域,這塊內存主要是被JVM存放Class和Meta信息的,Class在被Loader時就會被放到PermGen space中,它和存放類實例(Instance)的Heap區域不同,GC(Garbage Collection)不會在主程序運行期對PermGen space進行清理,所以如果你的應用中有很CLASS的話,就很可能出現“java.lang.OutOfMemoryError: PermGen space”錯誤。
    對于WEB項目,jvm加載類時,永久域中的對象急劇增加,從而使jvm不斷調整永久域大小,為了避免調整),你可以使用更多的參數配置。如果你的WEB APP下都用了大量的第三方jar, 其大小超過了jvm默認的大小,那么就會產生此錯誤信息了。
    其它參數:
    -XX:NewSize :默認為2M,此值設大可調大新對象區,減少Full GC次數
    -XX:NewRatio :改變新舊空間的比例,意思是新空間的尺寸是舊空間的1/8(默認為8)
    -XX:SurvivorRatio :改變Eden對象空間和殘存空間的尺寸比例,意思是Eden對象空
    間的尺寸比殘存空間大survivorRatio+2倍(缺省值是10)
    -XX:userParNewGC 可用來設置并行收集【多CPU】
    -XX:ParallelGCThreads 可用來增加并行度【多CPU】
    -XXUseParallelGC 設置后可以使用并行清除收集器【多CPU】

    2.修改tomcat讓其支持NIO
    修改前:
    protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/>
    修改成支持NIO的類型,配置如下 :
    protocol="org.apache.coyote.http11.Http11NioProtocol " connectionTimeout="20000" redirectPort="8443" />
    3.并發數設置
    默認的tomcat配置,并發測試時,可能30個USER上去就當機了。
    添加

    maxThreads="600" //最大線程數
    minSpareThreads="100" //初始化時創建的線程數
    maxSpareThreads="500" //一旦線程超過這個值,Tomcat會關閉不需要的socket線程
    acceptCount="700"http://指定當所有可以使用的處理請求的線程數都被使用時,可以放到
    處理隊列中的請求數,超過這個數的請求將不予處理

    connectionTimeout="20000"
    redirectPort="8443" />

    或者
    name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="500" minSpareThreads="400" />

    executor="tomcatThreadPool" port="80" protocol="HTTP/1.1" connectionTimeout="20000" enableLookups="false"
    redirectPort="8443" URIEncoding="UTF-8" acceptCount="1000" />
    4.Java虛擬機調優
    應該選擇SUN的JVM,在滿足項目需要的前提下,盡量選用版本較高的JVM,一般來說高版本產品在速度和效率上比低版本會有改進。 JDK1.4比JDK1.3性能提高了近10%-20%,JDK1.5比JDK1.4性能提高25%-75%。
    5.禁用DNS查詢
    設置enableLookups="false":
    enableLookups="false" redirectPort="8443" URIEncoding="UTF-8" acceptCount="1000" />
     當web應用程序向要記錄客戶端的信息時,它也會記錄客戶端的IP地址或者通過域名服務器查找機器名轉換為IP地址。DNS查詢需要占用網絡,并且包括可能從很多很遠的服務器或者不起作用的服務器上去獲取對應的IP的過程,這樣會消耗一定的時間。為了消除DNS查詢對性能的影響我們可以關閉 DNS查詢,方式是修改server.xml文件中的enableLookups參數值為false。
    6.設置解決亂碼問題
    URIEncoding="UTF-8" acceptCount="1000" />

    二、TOMCAT內存監控

    1.設置tomcat的perm size:

    2.開啟監控

    在命令行輸入jconsole,在彈出窗口中建立本地端口監控,如下圖:

     

    使用安裝版Tomcat 6.0 ,打開tomcat界面選擇java這一項,在java options:
    加入

    Java代碼 復制代碼 收藏代碼
    1. -Djava.rmi.server.hostname=127.0.0.1 
    2. -Dcom.sun.management.jmxremote.port=8088 
    3. -Dcom.sun.management.jmxremote.ssl=false 
    4. -Dcom.sun.management.jmxremote.authenticate=false 
    1. -Djava.rmi.server.hostname=127.0.0.1  
    2. -Dcom.sun.management.jmxremote.port=8088  
    3. -Dcom.sun.management.jmxremote.ssl=false  
    4. -Dcom.sun.management.jmxremote.authenticate=false  

    使用jconsole 127.0.0.1:8088可以連接成功,也能看到jvm運行情況,
    但此時訪問已經部署的應用,卻提示“無法顯示網頁”
    今天又研究了一會,猜想了一下是不是這個端口獨占的,不能和應用沖突,把Dcom.sun.management.jmxremote.port=8088 改為80, 重啟tomcat 果然,應用可以訪問。之后去網上看來些相關信息,確實為兩個端口,不能占用。

    posted on 2015-05-11 15:58 Eric_jiang 閱讀(166) 評論(0)  編輯  收藏 所屬分類: tomcat
    主站蜘蛛池模板: 豆国产96在线|亚洲| 污视频在线免费观看| 国产v亚洲v天堂无码网站| 污污网站免费观看| 亚洲日韩精品国产3区 | 国产成人免费网站在线观看| 一级做a爰黑人又硬又粗免费看51社区国产精品视| 亚洲中久无码永久在线观看同| 亚欧免费无码aⅴ在线观看| 亚洲色偷偷偷综合网| 国产亚洲av片在线观看16女人| 国产麻豆视频免费观看| 一级特黄录像免费播放肥| 亚洲精品免费网站| 亚洲综合精品香蕉久久网| 好先生在线观看免费播放 | 全部免费a级毛片| 无码精品人妻一区二区三区免费看| 亚洲国产一区二区三区在线观看| 亚洲桃色AV无码| 国产一级一片免费播放i| 最近2019年免费中文字幕高清| 十八禁的黄污污免费网站| 亚洲一区中文字幕在线观看| 国产亚洲无线码一区二区| 成在线人永久免费视频播放| 99在线观看免费视频| 亚洲阿v天堂在线2017免费| 亚洲综合精品第一页| 精品亚洲成a人片在线观看少妇| 亚洲AV伊人久久青青草原 | 国产专区一va亚洲v天堂| 毛片基地免费观看| 99久久精品国产免费| 二区久久国产乱子伦免费精品| 亚洲欧美日韩国产精品一区| 亚洲春色在线观看| 国产亚洲成AV人片在线观黄桃| 免费人成在线观看网站视频| 在线jlzzjlzz免费播放| 97免费人妻无码视频|