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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

【Tomcat优化篇】如何让你的Tomcat性能更加优越

發(fā)布時(shí)間:2023/12/20 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Tomcat优化篇】如何让你的Tomcat性能更加优越 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Tomcat優(yōu)化篇

一、Tomcat自身配置

1.Tomcat管理頁(yè)面

??我們可以打開Tomcat的管理頁(yè)面,這塊需要先配置下,在 tomcat-users.xml中添加相關(guān)的用戶和角色信息

<role rolename="manager"/><role rolename="manager-gui"/><role rolename="admin" /><role rolename="admin-gui" /><user username="tomcat" password="tomcat" roles="admin-gui,admin,manager-gui,manager" />

如果訪問提示出現(xiàn)了403的錯(cuò)誤,則修改webapps/manager/META-INF/context.xml中的內(nèi)容

訪問Tomcat服務(wù)

然后輸入配置的賬號(hào)密碼

可以看到對(duì)應(yīng)的監(jiān)控信息

2. 禁用AJP服務(wù)

??AJP是定向包協(xié)議。因?yàn)樾阅茉?#xff0c;使用二進(jìn)制格式來傳輸可讀性文本。WEB服務(wù)器通過TCP連接和SERVLET容器連接。為了減少進(jìn)程生成socket的花費(fèi),
WEB服務(wù)器和SERVLET容器之間嘗試保持持久性的TCP連接,對(duì)多個(gè)請(qǐng)求/回復(fù)循環(huán)重用一個(gè)連接。一旦連接分配給一個(gè)特定的請(qǐng)求,在請(qǐng)求處理循環(huán)結(jié)束之前不會(huì)再分配。
換句話說,在連接上,請(qǐng)求不是多元的。這個(gè)使連接兩端的編碼變得容易,雖然這導(dǎo)致在一時(shí)刻會(huì)有很多連接。

我們一般使用的Nginx+Tomcat的架構(gòu),所以用不著AJP協(xié)議,可以把AJP連接器禁用掉

3.Executor優(yōu)化

??在Tomcat中每一個(gè)用戶請(qǐng)求都是一個(gè)線程,針對(duì)線程池我們也可以提供對(duì)應(yīng)的優(yōu)化來提升性能。

<!-- 自定義線程池 --><Executor name="tomcatThreadPool" namePrefix="catalina-exec-"maxThreads="150" minSpareThreads="4"/><!-- A "Connector" represents an endpoint by which requests are receivedand responses are returned. Documentation at :Java HTTP Connector: /docs/config/http.html (blocking & non-blocking)Java AJP Connector: /docs/config/ajp.htmlAPR (HTTP/AJP) Connector: /docs/apr.htmlDefine a non-SSL HTTP/1.1 Connector on port 8080--><Connector executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" />

涉及到的幾個(gè)參數(shù)

參數(shù)說明
maxThreads最大的并發(fā)數(shù),不同版本默認(rèn)值有差別(150~200),一般建議500-1000
minSpareThreads初始化的線程數(shù)
maxQueueSize最大等待的隊(duì)列數(shù),超過就拒絕了

4.三種運(yùn)行模式

bio:默認(rèn)的模式,性能非常低下,沒有經(jīng)過任何優(yōu)化處理和支持。

nio:new I/O,同步非阻塞的I/O操作,比傳統(tǒng)的bio有更好的并發(fā)運(yùn)行性能。

apr:需要安裝 apr 、 apr-utils 、tomcat-native包,比較麻煩。是Apache HTTP服務(wù)器的支持庫(kù)。你可以簡(jiǎn)單地理解為,Tomcat將以JNI的形式調(diào)用Apache HTTP服務(wù)器的核心動(dòng)態(tài)鏈接庫(kù)來處理文件讀取或網(wǎng)絡(luò)傳輸操作,從而大大地提高Tomcat對(duì)靜態(tài)文件的處理性能。 Tomcat apr也是在Tomcat上運(yùn)行高并發(fā)應(yīng)用的首選模式。

@Deprecatedpublic void setProtocol(String protocol) {boolean aprConnector = AprLifecycleListener.isAprAvailable() &&AprLifecycleListener.getUseAprConnector();if ("HTTP/1.1".equals(protocol) || protocol == null) {if (aprConnector) {setProtocolHandlerClassName("org.apache.coyote.http11.Http11AprProtocol");} else {setProtocolHandlerClassName("org.apache.coyote.http11.Http11NioProtocol");}} else if ("AJP/1.3".equals(protocol)) {if (aprConnector) {setProtocolHandlerClassName("org.apache.coyote.ajp.AjpAprProtocol");} else {setProtocolHandlerClassName("org.apache.coyote.ajp.AjpNioProtocol");}} else {setProtocolHandlerClassName(protocol);}}

調(diào)整對(duì)應(yīng)的配置

5.web.xml

最終觀察tomcat啟動(dòng)日志[時(shí)間/內(nèi)容],線程開銷,內(nèi)存大小,GC等

DefaultServlet

<servlet><servlet-name>default</servlet-name><servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class><init-param><param-name>debug</param-name><param-value>0</param-value></init-param><init-param><param-name>listings</param-name><param-value>false</param-value></init-param><load-on-startup>1</load-on-startup></servlet>

JspServlet

<servlet><servlet-name>jsp</servlet-name><servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class><init-param><param-name>fork</param-name><param-value>false</param-value></init-param><init-param><param-name>xpoweredBy</param-name><param-value>false</param-value></init-param><load-on-startup>3</load-on-startup></servlet>

welcome-list-file

<welcome-file-list><welcome-file>index.html</welcome-file><welcome-file>index.htm</welcome-file><welcome-file>index.jsp</welcome-file></welcome-file-list>

mime-mapping移除響應(yīng)的內(nèi)容

<mime-mapping><extension>zip</extension><mime-type>application/zip</mime-type></mime-mapping><mime-mapping><extension>zir</extension><mime-type>application/vnd.zul</mime-type></mime-mapping>

session-config
默認(rèn)jsp頁(yè)面有session,就是在于這個(gè)配置

<session-config><session-timeout>30</session-timeout></session-config>

6.Host標(biāo)簽

autoDeploy :Tomcat運(yùn)行時(shí),要用一個(gè)線程拿出來進(jìn)行檢查,生產(chǎn)環(huán)境之下一定要改成false

unpackWARs:war包自動(dòng)解壓縮,同樣的生產(chǎn)環(huán)境改為false

7.Context標(biāo)簽

reloadable:false

reloadable:如果這個(gè)屬性設(shè)為true,tomcat服務(wù)器在運(yùn)行狀態(tài)下會(huì)監(jiān)視在WEB-INF/classes和WEB-INF/lib目錄下 class文件的改動(dòng),如果監(jiān)測(cè)到有class文件被更新的,服務(wù)器會(huì)自動(dòng)重新加載Web應(yīng)用。
在開發(fā)階段將reloadable屬性設(shè)為true,有助于調(diào)試servlet和其它的class文件,但這樣用加重服務(wù)器運(yùn)行負(fù)荷,建議 在Web應(yīng)用的發(fā)存階段將reloadable設(shè)為false。

8.啟動(dòng)速度優(yōu)化

  • 刪除沒用的web應(yīng)用:因?yàn)閠omcat啟動(dòng)每次都會(huì)部署這些應(yīng)用
  • 關(guān)閉WebSocket:websocket-api.jar和tomcat-websocket.jar
  • 隨機(jī)數(shù)優(yōu)化:設(shè)置JVM參數(shù):-Djava.security.egd=file:/dev/./urandom
  • 多個(gè)線程啟動(dòng)Web應(yīng)用: host:startStopThreads
  • 9.其他方面

    • Connector:配置壓縮屬性compression=“500”,文件大于500bytes才會(huì)壓縮
    • 數(shù)據(jù)庫(kù)優(yōu)化:減少對(duì)數(shù)據(jù)庫(kù)訪問等待的時(shí)間,可以從數(shù)據(jù)庫(kù)的層面進(jìn)行優(yōu)化,或者加緩存等等各種方案。
    • 開啟瀏覽器緩存,nginx靜態(tài)資源部署

    二、JMeter測(cè)試

    ??針對(duì)相關(guān)數(shù)據(jù)的測(cè)試我們可以通過JMeter來直觀的給大家來展示。我們?cè)趖omcat8.0的服務(wù)中部署一個(gè)war服務(wù)。

    我們找一個(gè)FlowableUI的war包,正常啟動(dòng):可以正常訪問

    然后我們通過JMeter來壓測(cè):

    設(shè)置請(qǐng)求相關(guān)信息

    選擇幾個(gè)監(jiān)聽器

    然后執(zhí)行:吞吐量:4103

    然后我們禁用掉AJP

    再測(cè)試:4149 稍微有點(diǎn)提升

    然后我們自定義線程池

    <!-- 自定義線程池 --><Executor name="tomcatThreadPool" namePrefix="catalina-exec-"maxThreads="500" minSpareThreads="50" prestartminSpareThreads="true"/>

    記得關(guān)聯(lián)上

    吞吐量:4188

    我們把線程池的相關(guān)數(shù)據(jù)調(diào)整下:最大線程數(shù)1000,最小線程數(shù)100再看看

    沒有太大的區(qū)別,這時(shí)我們可以設(shè)置最大的等待隊(duì)列:maxQueueSize=“100”

    我們可以發(fā)現(xiàn)當(dāng)添加了最大阻塞隊(duì)列后吞吐量提升到了5203了,提升效果顯著,但是同樣的異常率提升了很多32.6%,當(dāng)然這也是正常的現(xiàn)象了。

    最后我們修改下運(yùn)行的模式。改為NIO2,同時(shí)不加最大等待隊(duì)列來看看

    <!-- 自定義線程池 --><Executor name="tomcatThreadPool" namePrefix="catalina-exec-"maxThreads="500" minSpareThreads="50" prestartminSpareThreads="true" /><Connector executor="tomcatThreadPool" port="8080" protocol="org.apache.coyote.http11.Http11Nio2Protocol"connectionTimeout="20000"redirectPort="8443" />

    總結(jié)

    以上是生活随笔為你收集整理的【Tomcat优化篇】如何让你的Tomcat性能更加优越的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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

    主站蜘蛛池模板: 狂野欧美性猛交xxxxhd | 中文字幕一级二级三级 | 美女三级黄色 | 狠狠精品干练久久久无码中文字幕 | 精品在线第一页 | 亚洲在线第一页 | 欧美日韩亚洲精品一区二区 | 丝袜理论片在线观看 | 日韩精品资源 | 麻豆系列 | 中国女人做爰视频 | a少妇| 一级做a爰片 | 成人入口 | 国产亲伦免费视频播放 | 久久精品亚洲精品国产欧美 | 人妖天堂狠狠ts人妖天堂狠狠 | 91漂亮少妇露脸在线播放 | 国内自拍欧美 | 日韩高清一二三区 | www.xxx日韩| 在线a天堂 | 国产精品无码自拍 | 色婷婷在线影院 | xxxx.国产 | 国产真实乱人偷精品 | 性――交――性――乱睡觉 | 日本亚洲色大成网站www久久 | 天天摸天天插 | 3d动漫啪啪精品一区二区中文字幕 | 尹人在线视频 | 久久综合在线 | 色吊丝网站 | 人妻天天爽夜夜爽一区二区三区 | 亚洲欧美日本一区二区三区 | 国产精品无码久久久久成人app | 亚洲精品一区二区18漫画 | 欧美久久免费 | www.日日夜夜 | 国产探花一区二区 | 91麻豆映画传媒 | 日本一区二区三区视频在线播放 | 久久精品动漫 | 极品尤物一区二区 | 精品3p| 日韩亚洲国产欧美 | 久久综合高清 | 波多野结衣一区二区 | 午夜偷拍视频 | 男女啊啊啊 | www.毛片com | 精品麻豆av | 午夜小视频免费 | 久久在线看 | 国产精品乱码久久久久久久久 | 国产高清精品软件丝瓜软件 | 天堂在线网| 日韩高清影视 | 丰满少妇xbxb毛片日本 | 少妇肥臀大白屁股高清 | 国产欧美日韩精品一区 | 亚洲91在线| 日韩精品国产一区二区 | 久久高清免费 | 国内自拍2020 | 欧美猛交免费 | 久久久久草 | 午夜日韩在线 | 9色视频| 99热偷拍| 伊人久久伊人 | 欧美国产在线看 | 69国产在线 | 性感美女被爆操 | 一级黄色a级片 | 成人在线网址 | 欧美野外猛男的大粗鳮 | 五月情婷婷 | 婷婷激情网站 | 无码少妇一区二区 | 九九热国产精品视频 | 厨房性猛交hd | 欧美成人精品一区二区 | 亚洲欧美日韩精品在线 | 性盈盈影院中文字幕 | 91久久精品一区二区 | 一区二区三区高清在线 | 日韩欧美国产网站 | 色综合天天综合综合国产 | 亚洲精品久久久久久久久久吃药 | 欧美一卡| 男女做激情爱呻吟口述全过程 | 97视频播放 | 波多野结衣av在线免费观看 | 亚洲乱码国产乱码精品精大量 | 国产成人二区 | 一本色道久久亚洲综合精品蜜桃 | 久久精品资源 | 一区二区三区久久久久 |