tomcat 生產環境 jvm參數配置

僅供參考 JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms1024m -Xmx1024m -XX:NewSize=512m -XX:MaxNewSize=256m -XX:PermSize=512m -XX:MaxPermSize=512m"php

JAVA_OPTS="-Djava.awt.headless=true #這個設置不設置都沒有什麼區別 -Dfile.encoding=UTF-8 # 設置字符集 -server # 設置 jvm 爲服務器 模式,在win 裏面默認不是 服務默認, Linux 下默認是 服務器模式 -Xms2048m -Xmx2048m # 堆初始值和堆最大值同樣 此值能夠設置與-Xmx相同,以免每次垃圾回收完成後JVM從新分配內存。html

-Xss256k # 設置每一個線程的堆棧大小。JDK5.0之後每一個線程堆棧大小爲1M,之前每一個線程堆棧大小爲256K。更具應用的線程所需內存大小進行調整。在相同物理內存下,減少這個值能生成更多的線程。可是操做系統對一個進程內的線程數仍是有限制的,不能無限生成,經驗值在3000~5000左右。java

-Xmn1000m # 設置年輕代大小。整個堆大小=年輕代大小 + 年老代大小 + 持久代大小。持久代通常固定大小爲64m,因此增大年輕代後,將會減少年老代大小。此值對系統性能影響較大,Sun官方推薦配置爲整個堆的3/8。tomcat

-XX:+UseParNewGC # 設置年輕代爲並行收集。可與CMS收集同時使用。JDK5.0以上,JVM會根據系統配置自行設置,因此無需再設置此值。服務器

-XX:CMSFullGCsBeforeCompaction=5 # 因爲併發收集器不對內存空間進行壓縮、整理,因此運行一段時間之後會產生「碎片」,使得運行效率下降。此值設置運行多少次GC之後對內存空間進行壓縮、整理。併發

-XX:ParallelGCThreads=4 #配置並行收集器的線程數,即:同時多少個線程一塊兒進行垃圾回收。此值最好配置與處理器數目相等。oracle

-XX:+UseConcMarkSweepGC # 設置年老代爲併發收集less

-XX:NewSize=1000m -XX:MaxNewSize=1000m # 新生 代 的初始值 和 最大值jvm

-XX:PermSize=200m -XX:MaxPermSize=200m # 持久代 初始值 和 最大值 ,永久代存放Class、Method元信息,其大小跟項目的規模、類、方法的量有關,通常設置爲128M就足夠,設置原則是預留30%的空間。 "jsp

這個設置是 網上說的 什麼 響應時間 優化設置, 這樣配置後,最明顯的就是,發佈的時候,tomcat啓動快多了。 確實響應快多了。

參考: http://www.javashuo.com/article/p-yfnpvaoj-bv.html 參考: http://www.blogjava.net/midstr/archive/2008/09/21/230265.html 參考 官方的: http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html

https://my.oschina.net/zhaolin/blog/744818

https://my.oschina.net/woate/blog/380104

http://www.cnblogs.com/zhangpan1244/p/6197832.html

備註: -Xmn 新生代內存大小的最大值,包括E區和兩個S區的總和,使用方法如:-Xmn65535,-Xmn1024k,-Xmn512m,-Xmn1g (-Xms,-Xmx也是種寫法) -Xmn只能使用在JDK1.4或以後的版本中,(以前的1.3/1.4版本中,可以使用-XX:NewSize設置年輕代大小,用-XX:MaxNewSize設置年輕代最大值); 若是同時設置了-Xmn和-XX:NewSize,-XX:MaxNewSize,則誰設置在後面,誰就生效;若是同時設置了-XX:NewSize -XX:MaxNewSize與-XX:NewRatio則實際生效的值是:min(MaxNewSize,max(NewSize, heap/(NewRatio+1)))(看考:http://www.open-open.com/home/space.php?uid=71669&do=blog&id=8891) 在開發、測試環境,能夠-XX:NewSize 和 -XX:MaxNewSize來設置新生代大小,但在線上生產環境,使用-Xmn一個便可(推薦),或者將-XX:NewSize 和 -XX:MaxNewSize設置爲同一個值,這樣可以防止在每次GC以後都要調整堆的大小(即:抖動,抖動會嚴重影響性能)

配置了 響應時間 的方式後,啓動的時候 ,快不少了,程序反應快多了,可是 運行一段時間後, tomcat 就反應比較慢了。特別是 表格查詢的時候, 所以配置 處理 能力強點的 jvm

JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8   -server -Xms3800m -Xmx3800m -Xss256k -XX:+UseParallelGC -XX:+UseParallelOldGC  -XX:ParallelGCThreads=20 -XX:NewSize=2048m -XX:MaxNewSize=2048m -XX:PermSize=200m -XX:MaxPermSize=200m"

緣由的 響應時間 優化的,正在找緣由 ,爲何發佈的時候 項目反應快,可是 以後反應慢?

JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms3072m -Xmx3072m -Xss256k -XX:+UseParNewGC -XX:CMSFullGCsBeforeCompaction=5 -XX:ParallelGCThreads=4 -XX:+UseConcMarkSweepGC  -XX:NewSize=1300m -XX:MaxNewSize=1300m -XX:PermSize=200m -XX:MaxPermSize=200m"
相關文章
相關標籤/搜索