日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Tomcat性能优化总结

發(fā)布時(shí)間:2024/7/5 编程问答 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Tomcat性能优化总结 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

層級優(yōu)化!(JAVA_OPTS參數(shù)和主要元素的優(yōu)化)

Tomcat大致元素架構(gòu):server--->service-->Engine-->Host-->Context

Tomcat有可以使用三種協(xié)議:HTTPAJPHTTPS

tomcat默認(rèn)采用的BIO模型

tomcat的運(yùn)行模式有3種bio,nio,apr(額外安裝),例如:

protocol="org.apache.coyote.http11.Http11Nio2Protocol"

Tomcat各個(gè)元素里面都有listener監(jiān)聽器,由Service層的連接器connector通過線程池(Thread Pool)調(diào)用執(zhí)行器(Executor),Connector的作用是接收連接請求,創(chuàng)建Request和Response對象用于和請求端交換數(shù)據(jù);然后分配線程攜帶該request和response交給綁定的Engine來處理,最后把處理后的Request和Response返回給客戶端。

tomcat在啟動時(shí),會將web項(xiàng)目中WEB-INF/web.xml和自己的conf/web.xml進(jìn)行合并,然后在ContextConfig類下的configureContext()統(tǒng)一解析這些內(nèi)容

所以,不必要的配置要刪除,以減少Tomcat解析成本。

像在conf/web.xml的DefaultServlet或JspServlet,jspmap,mime,歡迎頁面按需來配置。

conf/server.xml的Listener監(jiān)聽器中,VersionLoggerListener作用是顯示版本和JDK環(huán)境,可以刪除;AprLifecycleListener作用:加載APR庫使用,這個(gè)配置僅當(dāng)connector的protocol設(shè)置為AJP/1.3時(shí)有用,如果非AJP/1.3,可以刪除。

GlobalResourcesLifecycleListener作用于全局資源

GlobalNamingResources可以定義全局資源,可以看出,這個(gè)tomcat的默認(rèn)配置是通過讀取$TOMCAT_HOME/ conf/tomcat-users.xml實(shí)現(xiàn)的。tomcat-user.xml用于定義tomcat管理頁面相關(guān)配置,如果不登錄管理界面可以刪掉。

當(dāng)tomcat需要集成到Apache服務(wù)器時(shí)才使用這個(gè)<connector?protocol=”AJP/1.3”/>

Server元素的port監(jiān)聽關(guān)閉服務(wù)的請求

Connector

port:指定服務(wù)器端要創(chuàng)建的端口號,并在這個(gè)斷口監(jiān)聽來自客戶端的請求

minProcessors:服務(wù)器啟動時(shí)創(chuàng)建的處理請求的線程數(shù)

maxProcessors:最大可以創(chuàng)建的處理請求的線程數(shù)

enableLookups:如果為true,則可以通過調(diào)用request.getRemoteHost()進(jìn)行DNS查詢來得到遠(yuǎn)程客戶端的實(shí)際主機(jī)名,若為false則不進(jìn)行DNS查詢,而是返回其ip地址

redirectPort:指定服務(wù)器正在處理http請求時(shí)收到了一個(gè)SSL傳輸請求后重定向的端口號

acceptCount:指定當(dāng)所有可以使用的處理請求的線程數(shù)都被使用時(shí),可以放到處理隊(duì)列中的請求數(shù),超過這個(gè)數(shù)的請求將不予處理

maxConnections:達(dá)到這個(gè)值之后,將繼續(xù)接受連接,但是不處理,能繼續(xù)接受多少根據(jù)acceptCount的值

minSpareThreads:最小空閑線程數(shù)

connectionTimeout:指定超時(shí)的時(shí)間數(shù)(以毫秒為單位)

tomcat默認(rèn)連接池有限制,可以為connector配置自己的連接池,例如:

<Connector?executor="tomcatThreadPool"port="8080"?protocol="HTTP/1.1"

jvm參數(shù)優(yōu)化

tomcat是用Java寫的,就要運(yùn)行在jvm上,垃圾處理方式等都要遵循jvm的方式。tomcat中設(shè)置jvm參數(shù)在 catalina.sh(Linux)和catalina.bat(windows)中,以JAVA_OPTS變量存儲。

各參數(shù)詳解:

-Xms:設(shè)置JVM初始內(nèi)存大小(默認(rèn)是物理內(nèi)存的1/64)

-Xmx:設(shè)置JVM可以使用的最大內(nèi)存(默認(rèn)是物理內(nèi)存的1/4,建議:物理內(nèi)存80%)

-Xmn:設(shè)置JVM最小內(nèi)存(128-256m就夠了,一般不設(shè)置)

?

-XX:PermSize :為JVM啟動時(shí)Perm的內(nèi)存大小

-XX:MaxPermSize :為最大可占用的Perm內(nèi)存大小(默認(rèn)為32M)

-XX:MaxNewSize,默認(rèn)為16M

-XX:NewSize :默認(rèn)為2M,此值設(shè)大可調(diào)大新對象區(qū),減少Full
GC次數(shù)

-XX:NewRatio :改變新舊空間的比例,意思是新空間的尺寸是舊空間的1/8(默認(rèn)為8)

-XX:SurvivorRatio :改變Eden對象空間和殘存空間的尺寸比例,意思是Eden對象空

間的尺寸比殘存空間大survivorRatio+2倍(缺省值是10)

-XX:userParNewGC 可用來設(shè)置并行收集【多CPU】

-XX:ParallelGCThreads 可用來增加并行度【多CPU】

-XXUseParallelGC 設(shè)置后可以使用并行清除收集器【多CPU】

1. conf/server.xml中Executor對應(yīng)的相關(guān)參數(shù)

<!--連接池設(shè)置-->
<Executor?
name="tomcatThreadPool" --線程池名
namePrefix="catalina-exec-" --線程名稱前綴 namePrefix+threaNumber
maxThreads="1000" --池中最大線程數(shù)
minSpareThreads="100" --活躍線程數(shù) 會一直存在
maxIdleTime="60000" --線程空閑時(shí)間,超過該時(shí)間,線程會被銷毀 ms
maxQueueSize="Integer.MAX_VALUE" --被執(zhí)行前線程的排隊(duì)數(shù)目
prestartminSpareThreads="false" --啟動線程池時(shí),是否啟用minSpareThreads部分線程
threadPriority="5" --線程池中線程優(yōu)先級 1~10
className="org.apache.catalina.core.StandardThreadExecutor" --線程實(shí)現(xiàn)類 自定義線程需時(shí)間 org.apache.catalina.Executor類
/>
<!--當(dāng)配置了連接池時(shí),需要配置該連接器-->
<Connector?
executor="tomcatThreadPool" --線程池名
port="8080"?
protocol="org.apache.coyote.http11.Http11AprProtocol"
connectionTimeout="20000"
redirectPort="8443" />

2.conf/server.xml中Connector對應(yīng)的相關(guān)參數(shù)


<Connector?
port="8080"?
protocol="org.apache.coyote.http11.Http11AprProtocol" --協(xié)議類型?
disableUploadTimeout="true"
keepAliveTimeout="20000"
connectionTimeout="20000" --已接受,但未被處理的請求的等待超時(shí)時(shí)間 ms
redirectPort="8443" --安全通信的轉(zhuǎn)發(fā)端口?
URIEncoding="UTF-8"--URL編碼字符集
minSpareThreads="100" --默認(rèn)初始化和保持空閑的線程數(shù)
enableLookups="false"--關(guān)閉DNS反向查詢
useURIValidationHack="false" --關(guān)閉不必要的檢查
maxThreads="1000" --處理請求線程的最大數(shù)目 未配置為200 此屬性會被忽略
acceptCount="1000" --所用可能的線程都在使用時(shí)傳入連接請求的最大長度
disableUploadTimeout="true" --設(shè)置允許更長的超時(shí)連接
maxConnections="1000"--接受和處理的最大連接數(shù)(nio/nio2 1000,apr 8192)
maxHttpHeaderSize="8192"--請求和響應(yīng)http頭的最大大小 8k
tcpNoDelay="true" --tcp不延遲
compression="on"--是否啟用壓縮 on off force?
compressionMinSize="2048" --壓縮前數(shù)據(jù)最小值 2k byte
noCompressionUserAgents="gozilla,traviata" --設(shè)置哪些瀏覽器不壓縮
compressableMimeType="text/html,text/xml,text/css,application/javascript,text/plain" --設(shè)置壓縮的文件類型
/>

3.?有關(guān) JAVA_OPTS

set JAVA_OPTS=
-server?
-Xms1000M?
-Xmx1000M #-Xms與-Xmx設(shè)成一樣的值,避免JVM因?yàn)轭l繁的GC導(dǎo)致性能大起大落
-Xss512k?
-XX:+AggressiveOpts?
-XX:+UseBiasedLocking?
-XX:+DisableExplicitGC?
-XX:MaxTenuringThreshold=15?
-XX:+UseConcMarkSweepGC?
-XX:+UseParNewGC?
-XX:+CMSParallelRemarkEnabled?
-XX:+UseCMSCompactAtFullCollection?
-XX:LargePageSizeInBytes=128m?
-XX:+UseFastAccessorMethods?
-XX:+UseCMSInitiatingOccupancyOnly

-Djava.awt.headless=true

4. 禁用8005端口

telnet localhost 8005 然后輸入 SHUTDOWN 就可以關(guān)閉 Tomcat,為了安全我們要禁用該功能

默認(rèn)值:

<Server port="8005" shutdown="SHUTDOWN">
修改為:

<Server port="-1" shutdown="SHUTDOWN">
---------------------

轉(zhuǎn)載于:https://www.cnblogs.com/Haihong72H/p/11008625.html

總結(jié)

以上是生活随笔為你收集整理的Tomcat性能优化总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。