1.修改tomcat/conf/server.xml配置文件。java
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="500" minSpareThreads="400" /> <Connector executor="tomcatThreadPool" port="80" protocol="HTTP/1.1" connectionTimeout="20000" enableLookups="false" redirectPort="8443" URIEncoding="UTF-8" acceptCount="1000" />
set JAVA_OPTS=-Xms1024m -Xmx1024m -XX:PermSize=128M -XX:MaxPermSize=256m
主要修改了maxThreads、acceptCount。Google資料說「若是要加大併發鏈接數,應同時加大這兩個參數。
1。 tomcat的線程數量有待商榷。 thread太多,致使切換過多,性能降低嚴重。這個數量應該是你單個機器的承載能力, 壓力測試下得出的結果。 不可任意加大。通常狀況下, 256-512個已經很是高的數值了。
2。JVM參數配置, 你這個會致使嚴重的stop world時間。 若是你想應用響應平緩, 通常看你的應用對於臨時內存的需求, 通常來講, -Xmn128-256m就夠了, 這個要看你的停頓時間的計算, 你把gc的收集打印出來,再研究下, 最大停頓時間。 這個個人BLOG說的比較詳細。 你去看看吧。
3。 -Xss128k 這個參數, 建議你設置成256k, 否則容易形成不夠用, 特別是你的程序有比較多的遞歸行爲。 好比排序。
4。 另外若是想提升內存的性能, 你能夠看看大內存設置.不是很好操做, 我沒有測試過。
5。 在性能提高上, 我建議你使用Linux kernel 2.6.22+版本, JAVA6 是否是32位的不是很要緊。這個提高是很是大的。
32位上, 你對JAVA能配置的內存理解是錯誤的。 通常來講1。5G的配置, 均可能致使JVM進程出問題, 這個測試我作過, 通常高壓力運行2-3天后, JVM會CRASH, 我不是很明白爲何, 有可能JAVA5在CMS的問題致使的。通常建議在32位下配置內存爲1280m.
=================================================================================
Heap Size 最大不要超過可用物理內存的80%,通常的要將-Xms和-Xmx選項設置爲相同堆內存分配 (訪問量比較大時設爲一致)
JVM初始分配的內存由-Xms指定,默認是物理內存的1/64;JVM最大分配的內存由-Xmx指定,默認是物理內存的1/4。默認空餘堆內存小於 40%時,JVM就會增大堆直到-Xmx的最大限制;空餘堆內存大於70%時,JVM會減小堆直到-Xms的最小限制。所以服務器通常設置-Xms、 -Xmx相等以免在每次GC 後調整堆的大小。
非堆內存分配
JVM使用-XX:PermSize設置非堆內存初始值,默認是物理內存的1/64;由XX:MaxPermSize設置最大非堆內存的大小,默認是物理內存的1/4。
JVM內存限制(最大值)
首先JVM內存限制於實際的最大物理內存(廢話!呵呵),假設物理內存無限大的話,JVM內存的最大值跟操做系統有很大的關係。簡單的說就32位 處理器雖然可控內存空間有4GB,可是具體的操做系統會給一個限制,這個限制通常是2GB-3GB(通常來講Windows系統下爲1.5G- 2G,Linux系統下爲2G-3G),而64bit以上的處理器就不會有限制了。(使用java命令測試出支持的最大值)tomcat