Tomcat8.5性能優(yōu)化

本文作者:梁開權,叩丁狼高級講師。原創(chuàng)文章,轉載請注明出處。

tomcat默認參數(shù)是為開發(fā)環(huán)境制定,而非適合生產(chǎn)環(huán)境,尤其是內存和線程的配置,默認都很低,容易成為性能瓶頸。

tomcat內存優(yōu)化

windows修改TOMCAT_HOME/bin/catalina.bat,在前面加入

set JAVA_OPTS=-XX:PermSize=64M -XX:MaxPermSize=128m -Xms512m -Xmx1024m

linux修改TOMCAT_HOME/bin/catalina.sh,在前面加入

JAVA_OPTS=”-XX:PermSize=64M -XX:MaxPermSize=128m -Xms512m -Xmx1024m -Duser.timezone=GMT+08”

最大堆內存是1024m,對于現(xiàn)在的硬件還是偏低,實施時,還是按照機器具體硬件配置優(yōu)化

tomcat 線程優(yōu)化

將原有的Executor標簽內容替換成如下內容

<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="500" minSpareThreads="30" maxIdleTime="60000" prestartminSpareThreads = "true" maxQueueSize = "100"/>

maxThreads:最大并發(fā)數(shù),默認設置 200,一般建議在 500 ~ 800,根據(jù)硬件設施和業(yè)務來判斷
minSpareThreads:Tomcat 初始化時創(chuàng)建的線程數(shù),默認設置 25
maxIdleTime:如果當前線程大于初始化線程,那空閑線程存活的時間,單位毫秒,默認60000=60秒=1分鐘。
prestartminSpareThreads:在 Tomcat 初始化的時候就初始化 minSpareThreads 的參數(shù)值,如果不等于 true,minSpareThreads 的值就沒啥效果了
maxQueueSize:最大的等待隊列數(shù),超過則拒絕請求

將原有的Connector標簽內容替換成如下內容

<Connector executor="tomcatThreadPool" port="80" protocol="org.apache.coyote.http11.Http11AprProtocol" connectionTimeout="60000" maxConnections="10000" redirectPort="8443" enableLookups="false" acceptCount="100" maxPostSize="10485760" maxHttpHeaderSize="8192" compression="on" disableUploadTimeout="true" compressionMinSize="2048" acceptorThreadCount="2" compressableMimeType="text/html,text/plain,text/css,application/javascript,application/json,application/x-font-ttf,application/x-font-otf,image/svg+xml,image/jpeg,image/png,image/gif,audio/mpeg,video/mp4" URIEncoding="utf-8" processorCache="20000" tcpNoDelay="true" connectionLinger="5" server="Server Version 85"/>

替換后訪問速度肯定會比以前快

protocol:Tomcat 8 設置 nio2 更好:org.apache.coyote.http11.Http11Nio2Protocol
protocol:Tomcat 8.5 設置 APR 性能飛快:
org.apache.coyote.http11.Http11AprProtocol

connectionTimeout:Connector接受一個連接后等待的時間(milliseconds),默認值是60000。
maxConnections:這個值表示最多可以有多少個socket連接到tomcat上
enableLookups:禁用DNS查詢
acceptCount:當tomcat起動的線程數(shù)達到最大時,接受排隊的請求個數(shù),默認值為100。
maxPostSize:設置由容器解析的URL參數(shù)的最大長度,-1(小于0)為禁用這個屬性,默認為2097152(2M) 請注意, FailedRequestFilter 過濾器可以用來拒絕達到了極限值的請求。
maxHttpHeaderSize:http請求頭信息的最大程度,超過此長度的部分不予處理。一般8K。
compression:是否啟用GZIP壓縮 on為啟用(文本數(shù)據(jù)壓縮) off為不啟用, force 壓縮所有數(shù)據(jù)
disableUploadTimeout:這個標志允許servlet容器使用一個不同的,通常長在數(shù)據(jù)上傳連接超時。 如果不指定,這個屬性被設置為true,表示禁用該時間超時。
compressionMinSize:當超過最小數(shù)據(jù)大小才進行壓縮
acceptorThreadCount:用于接受連接的線程數(shù)量。增加這個值在多CPU的機器上,盡管你永遠不會真正需要超過2。 也有很多非維持連接,您可能希望增加這個值。默認值是1。
compressableMimeType:配置想壓縮的數(shù)據(jù)類型
URIEncoding:網(wǎng)站一般采用UTF-8作為默認編碼。
processorCache:協(xié)議處理器緩存的處理器對象來提高性能。 該設置決定多少這些對象的緩存。-1意味著無限的,默認是200。 如果不使用Servlet 3.0異步處理,默認是使用一樣的maxThreads設置。 如果使用Servlet 3.0異步處理,默認是使用大maxThreads和預期的并發(fā)請求的最大數(shù)量(同步和異步)。
tcpNoDelay:如果設置為true,TCP_NO_DELAY選項將被設置在服務器套接字,而在大多數(shù)情況下提高性能。這是默認設置為true。
connectionLinger:秒數(shù)在這個連接器將持續(xù)使用的套接字時關閉。默認值是 -1,禁用socket 延遲時間。
server:隱藏Tomcat版本信息,首先隱藏HTTP頭中的版本信息

想獲取更多技術視頻,請前往叩丁狼官網(wǎng):http://www.wolfcode.cn/openClassWeb_listDetail.html

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 飽食終日,早上從中午開始,這樣的日子一天天悄然溜走。計算了起始,規(guī)劃了過程,考量了結語,可現(xiàn)實卻是,隨意而任性,既...
    梅雨中閱讀 367評論 0 2
  • (2016-04-28-Thu 17:02:27) ①過期事件和提醒;② Events for “想法”對話框
    菜五閱讀 1,136評論 1 0
  • 以前上學的時候,父母總會苦口婆心的告誡著我,你要用功的讀書,才能上好的學校有好的工作。那時候的我很貪玩,從來不...
    水娃小司閱讀 178評論 0 0
  • (補記一則)10.11(九月二十三)星期六晴 【碎言碎語】 一天的時間,還是沒做多少事情?!耙粋€人,無論他...
    五月的草莓閱讀 206評論 0 0
  • 第1章講計劃,第2章是選擇,第3章是行動 一開始所拋出的【隨著事情越積越多,我們慢慢會覺得無法承受,情緒上的各種問...
    辰司閱讀 552評論 0 0

友情鏈接更多精彩內容