Tomcat 優化和性能監測
阿新 • • 發佈:2018-05-12
並行 ptc zha BE dap any process 服務器 explicit 1. JVM 優化(Tomcat 啟動行參數)
Linux 修改 catalin.sh
Windows 修改 catalin.bat
Linux系統中tomcat的啟動參數
Windows系統中tomcat的啟動參數
-server 生產環境必須添加此參數,可以改變 Tomcat 的運行模式,更大、更高的並發處理能力,更快更強捷的JVM垃圾回收機制,可以獲得更多的負載與吞吐量。
-Xms–Xmx JVM內存設置,建議設置成同一個值,可以在命令行中使用 java -Xmx1500m -version 來測試當前服務器可以設置的最大內存。(-Xmx 的值太大時,JVM 無法啟動)
-Xmn 年輕代 整個堆大小=年輕代大小 + 年老代大小 + 持久代大小。持久代一般固定大小為64m。
-Xss 是指設定每個線程的堆棧大小。一般不超過 1M。
-XX:+AggressiveOpts 根據 JDK 的不同而采用不同的優化策略。
-XX:+UseBiasedLocking 優化線程鎖。
-XX:PermSize=128M-XX:MaxPermSize=256M 非堆內存初始值和最大值。默認值為物理內存的 1/64 和 1/4。
-XX:+DisableExplicitGC 控制程序代碼中不允許顯示調用 System.gc()。
-XX:+UseParNewGC 對年輕代采用多線程並行回收,這樣收得快。
-XX:+UseConcMarkSweepGC 使用更好的 GC 技術。
-XX:+CMSParallelRemarkEnabled 在使用UseParNewGC 的情況下, 盡量減少 mark 的時間
-XX:+UseCMSCompactAtFullCollection 減少 Memory 碎片。
-XX:LargePageSizeInBytes 指定 Java heap 的分頁頁面大小
-XX:+UseFastAccessorMethods get,set 方法轉成本地代碼
-XX:+UseCMSInitiatingOccupancyOnly 指示只有在 oldgeneration 在使用了初始化的比例後concurrent collector 啟動收集
-XX:CMSInitiatingOccupancyFraction=70 年老代到 70% 滿的時候開始執行對年老代的並發垃圾回收((Xmx-Xmn)*(100- CMSInitiatingOccupancyFraction)/100>=Xmn)
-Djava.awt.headless=true 解決圖片在 Linux 上無法顯示圖片的問題
2.Tomcat容器內的優化
修改 server.xml文件
export JAVA_OPTS="-server -Xms1400M -Xmx1400M -Xss512k -XX:+AggressiveOpts
-XX:+UseBiasedLocking -XX:PermSize=128M -XX:MaxPermSize=256M -XX:+DisableExplicitGC
-XX:MaxTenuringThreshold=31 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC
-XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection
-XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods
-XX:+UseCMSInitiatingOccupancyOnly -Djava.awt.headless=true "
set JAVA_OPTS=-server -Xms1400M -Xmx1400M -Xss512k
-XX:+AggressiveOpts -XX:+UseBiasedLocking -XX:PermSize=128M
-XX:MaxPermSize=256M -XX:+DisableExplicitGC -XX:MaxTenuringThreshold=31
-XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled
-XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m
-XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly
-Djava.awt.headless=true
<Connector port="8080" protocol="HTTP/1.1" URIEncoding="UTF-8" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" disableUploadTimeout="true" connectionTimeout="20000" acceptCount="300" maxThreads="300" maxProcessors="1000" minProcessors="5" useURIValidationHack="false" compression="on" compressionMinSize="2048" compressableMimeType="text/html,text/xml,text/JavaScript,text/css,text/plain" redirectPort="8443" />URIEncoding="UTF-8" maxSpareThreads 最大空閑線程數,大於這個數將終止多余的線程。 minSpareThreads 初始化線程數。 enableLookups 不使用 Look。 connectionTimeout 連接超時毫秒數。 maxThreads 即 Tomcat 可創建的最大的線程數,即最大並發數。 acceptCount 當線程數達到maxThreads後,後續請求會被放入一個等待隊列,這個acceptCount是這個隊列的大小,如果這個隊列也滿了,就直接refuse connection。 maxProcessors與minProcessors 最大線程數和最小線程數。 useURIValidationHack 減少對一些url的不必要的檢查從而減省開銷。 enableLookups="false" 關閉DNS查詢。 disableUploadTimeout compression 給Tomcat配置gzip壓縮(HTTP壓縮)功能。 3.Tomcat 性能檢測 VisualVM監控( JDK 自帶) 推薦使用。 內存分析,CPU 分析,線程分析等。 LambdaProbe監控 需要打成 war 放入 tomcat webapp 目錄下。 JProfiler監控 商業的主要用於檢查和跟蹤系統的性能的工具。需要在服務器端安裝 JProfiler 軟件。 參考: http://blog.csdn.net/lifetragedy/article/details/7708724 http://www.cnblogs.com/yezhaohui/p/3875567.html http://www.cnblogs.com/yezhaohui/p/3875567.html http://www.ibm.com/developerworks/cn/java/j-lo-visualvm/ http://www.ej-technologies.com/products/jprofiler/overview.html http://www.blogjava.net/anymobile/articles/28248.html
Tomcat 優化和性能監測