您好,登錄后才能下訂單哦!
[root@localhost ~]# cat server.xml
......
<Connector port="8080"
protocol="HTTP/1.1"
maxHttpHeaderSize="8192" # 設置 HTTP 頭部大小
maxThreads="5000" # 指定可創建的最大線程數, 默認值為 200
minSpareThreads="30" # 指定最小空閑線程數, 默認值是 25
maxSpareThreads="300" # 指定最大空閑線程數
maxIdleTime="60000" # 指定線程最大空閑時間, 單位毫秒
minProcessors="30" # 服務器創建時的最小處理線程數
maxProcessors="5000" # 服務器同時最大處理線程數
enableLookups="false" # 關閉主機名反解, 值為 true 或 false; true 返回主機名, false 返回 IP 地址
URIEncoding="utf-8" # 設置 URL 編碼
acceptCount="5000" # 監聽端口隊列最大數(不能小于 maxSpareThreads)
redirectPort="8443" # 在需要基于安全通道的場合, 把客戶請求轉發到基于 SSL 的端口
disableUploadTimeout="false" # 指定上傳時是否使用超時機制, 值為 true 或 false
compression="on" # 指定是否對響應的數據進行 GZIP 壓縮, on 允許壓縮(文本壓縮), off 禁止壓縮, force 所有情況都進行壓縮, 默認值為 off
compressionMinSize="2048" # 指定壓縮響應的最小值, 響應報文大小大于該值對報文進行壓縮, 默認值為 2048
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" # 壓縮類型
noCompressionUserAgents="gozilla,traviata" # 指定對以下的瀏覽器不啟用壓縮
connnectionTimeout="30000" # 指定網絡連接超時時間, 0 表示永不超時, 單位毫秒
connectionUploadTimeout="150000" # 指定上傳超時時間, 單位毫秒
keepAliveTimeout="120000" # 指定長連接最大保持時間, 默認使用 connectionTimeout 時間, -1 表示不限制超時, 單位毫秒
maxKeepAliveRequests="1" # 最大長連接個數, 1 表示禁用長連接, -1 表示不限制長連接個數, 默認運行保持 100 長連接
connectionTimeout="5000" /> # 客戶連接超時的時間, 如果為 -1 表示不限制建立客戶連接的時間, 單位毫秒
Tomcat 連接器的三種方式: bio、nio 和 apr, apr 性能最優, bio 性能最差
BIO: 同步并阻塞, 服務器實現模式為一個連接一個線程(默認的工作模式)
# NIO 的工作模式
NIO: 同步非阻塞(JDK1.4 以上版本)
<Connector port="8080"
protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="20000"
URIEncoding="UTF-8"
useBodyEncodingForURI="true"
enableLookups="false"
redirectPort="8443" />
# APR 的工作模式
APR: 從操作系統級別來解決異步的 IO 問題, 大幅度的提高性能, JDK7 開始支持, 需要安裝官方的插件才能使用
http://tomcat.apache.org/native-doc/ # 插件下載
yum -y install tomcat-native # 或者使用 yum 安裝, 在 epel 中
<Connector port="8080"
protocol="org.apache.coyote.http11.Http11AprProtocol"
connectionTimeout="20000"
URIEncoding="UTF-8"
useBodyEncodingForURI="true"
enableLookups="false"
redirectPort="8443" />
[root@localhost ~]# cat context.xml
# 設置上下文最大可用緩存
<Resources cachingAllowed="true" cacheMaxSize="100000" />
cachingAllowed 指定允許開啟緩存
cacheMaxSize 指定最大可用緩存, 默認 10M, 單位 KB
[root@localhost ~]# cat catalina.properties
# 禁用 TLDs 掃描
tomcat.util.scan.StandardJarScanFilter.jarsToSkip = ****
JVM
優化主要修改 catalina.sh
腳本里面 JAVA_OPTS
和 CATALINA_OPTS
的參數JAVA_OPTS
: 設置 JVM
相關運行參數的變量,用于Java運行時選項start
, stop
或 run
命令執行CATALINA_OPTS
: 設置 Tomcat
相關運行參數的變量, 用于 Java
運行時選項 start
, run
命令執行
JVM
內存劃分分為新生代(Young Generation)
、老年代(Old Generation)
、永久代(Permanent Generation)
堆內存(Heap) = 新生代 + 老年代, 非堆內存 = 永久代
CATALINA_OPTS="
${CATALINA_OPTS}
-server
-Xms6000M
-Xmx6000M
-Xss512k
-XX:NewSize=2250M
-XX:MaxNewSize=2250M
-XX:+AggressiveOpts
-XX:+UseBiasedLocking
-XX:+DisableExplicitGC
-XX:+UseParNewGC
-XX:+UseConcMarkSweepGC
-XX:MaxTenuringThreshold=15
-XX:+CMSParallelRemarkEnabled
-XX:LargePageSizeInBytes=128M
-XX:+UseFastAccessorMethods
-XX:+UseCMSInitiatingOccupancyOnly
-Duser.timezone=Asia/Shanghai
-Djava.awt.headless=true
-Dfile.encoding=UTF8
-Dsun.jnu.encoding=UTF8
"
-server 啟動速度慢, 運行時性能和內存管理效率高
-clien 啟動速度快, 運行時性能和內存管理效率低
-Xms 指定 Java 初始化堆大小, -Xms 與 -Xmx 設成一樣的值, 避免 JVM 反復重新申請內存, 默認值為物理內存的 1/64, 空余堆內存小于 40% 時 JVM 增大堆直到 -Xmx 的最大限制
-Xmx 指定 Java 最大堆大小, 最大值設置為可用內存的最大值的 80%, 空余堆內存大于 70% 時 JVM 減少堆直到 -Xms 的最小限制
-Xss 指定每個 Java 線程堆棧大小, 每個線程堆棧大小為 1M, 線程大小不建議超過 1M
-XX:NewSize 指定新生代內存大小
-XX:MaxNewSize 指定最大新生代內存大小
-XX:+AggressiveOpts 指定每當 JDK 版本升級時, JVM 都會使用最新加入的優化技術
-XX:+UseBiasedLocking 指定優化線程鎖對線程處理自動進行最優調配
-XX:+DisableExplicitGC 指定程序代碼中不允許顯示調用 System.gc()
-XX:+UseConcMarkSweepGC 指定老年代為并發收集(CMS GC), CMS GC在GC次數增多的情況下, 每次GC的響應時間很短(幾毫秒)
-XX:+UseParNewGC 指定新生代采用多線程并行回收
-XX:MaxTenuringThreshold 指定垃圾最大年齡, 設置為 0 新生代對象不經過 Survivor 區, 直接進入老年代, 對于老年代比較多的應用(需要大量常駐內存的應用)可以提高效率; 設置為一個較大值新生代對象會在 Survivor 區進行多次復制, 可以增加對象在新生代的存活時間, 增加在新生代即被回收的概率, 減少 Full GC 的頻率。該參數只有在串行 GC 時才有效
-XX:+CMSParallelRemarkEnabled 指定使用 UseParNewGC 的情況下, 盡量減少 Mark 的時間
-XX:LargePageSizeInBytes 指定 Java Heap 的分頁頁面大小, 內存頁的大小不可設置過大, 會影響 Perm 的大小
-XX:+UseFastAccessorMethods 指定使用 Get, Set 方法轉成本地代碼, 原始類型的快速優化
-XX:+UseCMSInitiatingOccupancyOnly 指定在 Oldgeneration 在使用了初始化的比例后 Concurrent Collector 啟動收集
-Duser.timezone=Asia/Shanghai 指定時區
-Djava.awt.headless=true 兼容 Linux/Unix 下圖形報表顯示輸出
-Xmn 指定新生代內存大小, 增大新生代后將會減小老年代大小, 對系統性能影響較大, Sun 官方推薦配置為整個堆的 3/8
-XX:CMSInitiatingOccupancyFraction 當堆滿之后, 并行收集器開始進行垃圾收集, 與 Xmn 關聯使用
-XX:+CMSIncrementalMode 指定開啟 CMS 收集器增量模式, 增量模式經常暫停 CMS 過程, 對應用程序線程作出完全的讓步
-XX:+UseSerialGC 指定使用串行收集器, 老年代使用串行收集
-XX:+UseParallelGC 指定使用并行收集器, 新生代使用并行收集
-XX:+UseParallelOldGC 指定老年代垃圾收集方式為并行收集
-XX:ConcGCThreads 指定并發 CMS 過程運行時的線程數, 如果未設置, JVM 會根據并行收集器中的 -XX:ParallelGCThreads 參數的值來計算出默認的并行 CMS 線程數
-XX:ParallelGCThreads 指定并行收集器的線程數,建議配置與CPU數目相等
-XX:OldSize 指定老年代內存大小
設置字符集編碼:
-Dfile.encoding=UTF8
-Dsun.jnu.encoding=UTF8
-Djavax.servlet.request.encoding=UTF-8
-Djavax.servlet.response.encoding=UTF-8
-Dfile.encoding=UTF-8
-Duser.country=CN
-Duser.language=zh
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。