<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
    主站蜘蛛池模板: 亚洲成AV人片在线观看| 国产精品亚洲玖玖玖在线观看| 久久亚洲中文字幕精品有坂深雪| 免费无码一区二区三区蜜桃 | 亚洲成AV人网址| 国产精品亚洲精品爽爽| 国产在线观看免费视频播放器| 亚洲熟妇AV乱码在线观看| 成人au免费视频影院| 亚洲另类无码一区二区三区| 日韩一品在线播放视频一品免费| 亚洲AV无码一区二区乱子仑 | 浮力影院第一页小视频国产在线观看免费| 亚洲一线产区二线产区精华| 成年在线观看免费人视频草莓| 亚洲色www永久网站| 国产真人无遮挡作爱免费视频| 国产精品亚洲专区一区| 久久亚洲国产精品123区| 麻豆精品成人免费国产片| 7777久久亚洲中文字幕蜜桃| 久久久久久99av无码免费网站| 亚洲精品GV天堂无码男同| 亚洲欧洲一区二区三区| 无码人妻久久一区二区三区免费 | 美女黄色免费网站| 亚洲情综合五月天| 最近中文字幕大全中文字幕免费| 色偷偷女男人的天堂亚洲网| 免费在线黄色网址| 美女视频黄a视频全免费网站色窝| 亚洲精品国产免费| 可以免费观看一级毛片黄a | 国产免费人成视频在线观看| 大妹子影视剧在线观看全集免费| 亚洲国产精久久久久久久| 男女交性永久免费视频播放| 久久精品无码免费不卡| 亚洲1234区乱码| 亚洲精品成人网站在线观看 | 免费在线观看a级毛片|