Tomcat 的啓動參數位於tomcat的安裝目錄\bin目錄下,若是你是Linux操做系統就是catalina.sh文件,若是你是Windows操做系統那麼 你須要改動的就是catalina.bat文件css
JAVA_OPTS="$JAVA_OPTS -server -Xms4096m -Xmx4096m -Xmn1024m -Xss256K -XX:+DisableExplicitGC -XX:MaxTenuringThreshold=15 -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/home/gclogs/gc.log -Djava.awt.headless=true"
解釋:
-server:更高的性能
-Xms4096m:初始堆內存4g
-Xmx4096m:最大堆內存4g
-Xmn1024m:年輕代1g
-Xss256K:每一個線程佔用的空間
-XX:+DisableExplicitGC:禁止顯示調用gc
-XX:MaxTenuringThreshold=15:在年輕代存活次數
-XX:+UseParNewGC:對年輕代採用多線程並行回收
-XX:+UseConcMarkSweepGC:年老代採用CMS回收
-XX:+CMSParallelRemarkEnabled:在使用UseParNewGC 的狀況下, 儘可能減小 mark 的時間
-XX:+UseCMSCompactAtFullCollection:在使用concurrent gc 的狀況下, 防止 memoryfragmention, 對live object 進行整理, 使 memory 碎片減小
-XX:LargePageSizeInBytes=128m:指定 Java heap的分頁頁面大小
-XX:+UseFastAccessorMethods:get,set 方法轉成本地代碼
-XX:+UseCMSInitiatingOccupancyOnly:指示只有在 oldgeneration 在使用了初始化的比例後concurrent collector 啓動收集
-XX:CMSInitiatingOccupancyFraction=70:年老代到達70%進行gc
-Djava.awt.headless=true :Headless模式是系統的一種配置模式。在該模式下,系統缺乏了顯示設備、鍵盤或鼠標。
-XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/home/gclogs/gc.log:打印日誌信息html
備註:上面的收集器年輕代用的ParNewGC,年老代用的CMS;也能夠用G1收集器java
-XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:MaxGCPauseMillis=50 -XX:GCPauseIntervalMillis=200
解釋:
-XX:+UnlockExperimentalVMOptions -XX:+UseG1GC #開啓G1,這兩個要同時使用
-XX:MaxGCPauseMillis=50 #暫停時間目標;
-XX:GCPauseIntervalMillis=200 #暫停間隔目標;ios
tomcat的安裝目錄\conf下面的server.xmlspring
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" URIEncoding="UTF-8" maxThreads="300" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" acceptCount="300" maxProcessors="1000" minProcessors="5" useURIValidationHack="false" compression="on" compressionMinSize="2048" compressableMimeType="text/html,text/xml,text/JavaScript,text/css,text/plain" redirectPort="8443" />
解釋:
protocol:協議
connectionTimeout:鏈接超時時間毫秒數
URIEncoding:編碼
maxThreads:Tomcat可建立的最大的線程數,即最大併發數
minSpareThreads:最小備用線程數,tomcat啓動時的初始化的線程數。
maxSpareThreads:若是空閒狀態的線程數多於設置的數目,則將這些線程停止,減小這個池中的線程總數
enableLookups:是否容許域名反查
acceptCount:當線程數達到maxThreads後,後續請求會被放入一個等待隊列,這個acceptCount是這個隊列的大小,若是這個隊列也滿了,就直接refuse connection
maxProcessors:最大鏈接數
minProcessors:初始化鏈接數
useURIValidationHack:對url進行檢查
compression:啓動壓縮
compressionMinSize:2048當返回內容大於等於2kb啓動壓縮,到客戶端在解壓
compressableMimeType:壓縮類型tomcat
springboot直接用jar包啓動,在啓動命令裏面加參數,下面是例子:springboot
nohup java -server -Xms4096m -Xmx4096m -Xmn1024m -Xss256K -XX:+DisableExplicitGC -XX:MaxTenuringThreshold=15 -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/home/gclogs/gc.log -Djava.awt.headless=true -jar mq.jar &
在application.yml中配置服務器
server: tomcat: uri-encoding: UTF-8 max-threads: 300 min-spare-threads: 25 max-connections: 1000 accept-count: 300 port: 8080 connection-timeout: 20000 compression: enabled: true mime-types: text/html,text/xml,text/JavaScript,text/css,text/plain min-response-size: 2048
注:128914是線程id
查看負載:w、uptime
查看cpu:top
內存:free
磁盤:df
IO:iostat、vmstat
查看gc狀況: jstat -gc 128914 2000 2
查看堆棧狀況:jstack 128914
分析gc日誌:more gc.log
查看進程裏面的全部線程狀況:top -Hp 128914多線程