Linux下修改tomcat9 jvm內存大小:
一.修改配置
1 #要添加在tomcat 的bin 下catalina.sh 里添加 2 JAVA_OPTS="-Xms1024m -Xmx2048m -Xss2048K -XX:PermSize=128m -XX:MaxPermSize=256m"
二.參數說明
-Xms 初始化內存大小,一般設置為和Xmx一致,避免每次垃圾回收后重新分配內存 -Xmx 最大可用內存 -Xmn 年輕代大小 -Xss 設置每個線程棧的大小 -XX:MetaspaceSize=512M 初始元空間大小,達到該值就會觸發垃圾收集進行類型卸載,同時GC會對該值進行調整:如果釋放了大量的空間,就適當降低該值;如果釋放了很少的空間,那么在不超過MaxMetaspaceSize時,適當提高該值。 -XX:MaxMetaspaceSize=512M -XX:+UseConcMarkSweepGC 並發標記清除(CMS)收集器 -XX:+CMSClassUnloadingEnabled -XX:+HeapDumpOnOutOfMemoryError 表示當JVM發生OOM時,自動生成DUMP文件。 -XX:HeapDumpPath=${目錄}參數表示生成DUMP文件的路徑,也可以指定文件名稱,例如:-XX:HeapDumpPath=${目錄}/java_heapdump.hprof。如果不指定文件名,默認為:java_<pid>_<date>_<time>_heapDump.hprof。
三.tomcat 相關參數優化
1 連接數,線程數,緩存,修改server.xml
打開被注釋的默認連接池配置
默認配置:
<!-- <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="150" minSpareThreads="4"/> -->
修改實例:
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="150" minSpareThreads="100" prestartminSpareThreads="true" maxQueueSize="100"/>
參數講解:
name: 線程名稱 namePrefix: 線程前綴 maxThreads : 最大並發連接數,不配置時默認200,一般建議設置500~ 800 ,要根據自己的硬件設施條件和實際業務需求而定。 minSpareThreads:Tomcat啟動初始化的線程數,默認值25 prestartminSpareThreads:在tomcat初始化的時候就初始化minSpareThreads的值, 不設置trueminSpareThreads 的值就沒啥效果了 。 maxQueueSize: 最大的等待隊列數,超過則拒絕請求
修改配置:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" executor="tomcatThreadPool" enableLookups="false" maxIdleTime="60000" acceptCount="100" maxPostSize="10485760" acceptorThreadCount="2" disableUploadTimeout="true" URIEncoding="utf-8" keepAliveTimeout ="6000" maxKeppAliveRequests="500" />
參數講解:
1 port:連接端口。 2 protocol:連接器使用的傳輸方式。 3 executor: 連接器使用的線程池名稱 4 enableLookups:禁用DNS 查詢 5 maxIdleTime:線程空閑時間,超過該時間后,空閑線程會被銷毀,默認值為6000(1分鍾),單位毫秒。 6 acceptCount:指定當所有可以使用的處理請求的線程數都被使用時,可以放到處理隊列中的請求數,超過這個數的請求將不予處理,默認設置 100 。 7 maxPostSize:限制 以FORM URL 參數方式的POST請求的內容大小,單位字節,默認是 2097152(2兆),10485760 為 10M。如果要禁用限制,則可以設置為 -1。 8 acceptorThreadCount: 用於接收連接的線程的數量,默認值是1。一般這個指需要改動的時候是因為該服務器是一個多核CPU,如果是多核 CPU 一般配置為 2。 9 disableUploadTimeOut:允許Servlet容器,正在執行使用一個較長的連接超時值,以使Servlet有較長的時間來完成它的執行,默認值為false 10 keepAliveTimeout - 表示在下次請求過來之前,tomcat保持該連接多久。這就是說假如客戶端不斷有請求過來,且未超過過期時間,則該連接將一直保持。 11 maxKeepAliveRequests -表示該連接最大支持的請求數。超過該請求數的連接也將被關閉(此時就會返回一個Connection: close頭給客戶端).(maxKeepAliveRequests="1"代表禁用長連接)(1表示禁用,-1表示不限制個數,默認100個。一般設置在100~200之間)
參考鏈接:https://blog.csdn.net/weixin_37377511/java/article/details/80606964