<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
在tomcat-users.xml中新增使用者:
<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"/>
點選server status 輸入使用者名稱密碼可以檢視伺服器的狀態
1、伺服器資訊
2、JVM的資訊 (預設的這些值都很低,我們可以設定)
PS Eden Space:JVM的年輕代。 一個物件new 出來後會在Eden Space,直到GC到來,GC會逐一問清楚每個物件是否存在參照,進入Survivor Space(倖存區),沒有參照將被kill。
PS Old Gen:JVM的老年代。
PS Survivor Space:倖存區。倖存者區的物件可以活段時間,GC會定期(可以自定義)會對這些物件進行存取,如果該物件的參照不存在了將被kill,如果每次存取該物件都存在參照,將被轉移到老年代。(用於儲存在eden space記憶體池中經過垃圾回收後沒有被回收的物件。)
Code Cache:程式碼快取區。HotSpot Java虛擬機器器包括一個用於編譯和儲存原生程式碼(native code)的記憶體。
PS Perm Gen:永久代。
1、BIO(阻塞式):tomcat的預設模式,該模式效能較低,沒有經過任何優化處理和支援,一個執行緒處理一個請求。缺點:並行量過大時,執行緒數較多,浪費資源。tomcat7及以下版本,在linux系統中預設使用該模式。
2、NIO-Non-blocking IO(非阻塞IO):Java NIO可以讓你非阻塞的使用IO,例如:當執行緒從通道讀取資料到緩衝區時,執行緒還是可以進行其他事情。當資料被寫入到緩衝區時,執行緒可以繼續處理它。從緩衝區寫入通道也類似。Tomcat8在Linux系統中預設使用這種方式。
3、APR:Apache Portable Runtime,從作業系統層面解決io阻塞問題。Tomcat7或Tomcat8在Win7或以上的系統中啟動預設使用這種方式。Linux如果安裝了apr和native,Tomcat直接啟動就支援apr。
(安裝方法:https://www.jb51.net/os/78408.html)
檢視tomcat的啟動模式:
修改tomcat的執行模式:
將<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> protocol="HTTP/1.1" 修改為NIO模式
<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000" redirectPort="8443" />
修改後:
ps:這就是tomcat優化第一步,優化tomcat的執行模式
3、http資訊
tomcat預設是沒有啟用執行緒池的,在tomcat中每一個使用者請求都是一個執行緒,所以我們可以使用執行緒池來提高效能。tomcat的前段有一個排程執行緒,會將使用者的請求放入執行緒池中,一定時間後執行緒池中的使用者請求任務就變為工作執行緒。
1、開啟執行緒池:開啟server.xml中關於執行緒池的設定
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="600" minSpareThreads="10"/>
重要引數說明:
name
:共用執行緒池的名字。這是Connector為了共用執行緒池要參照的名字,該名字必須唯一。預設值:None;
namePrefix
:在JVM上,每個執行執行緒都可以有一個name 字串。這一屬性為執行緒池中每個執行緒的name字串設定了一個字首,Tomcat將把執行緒號追加到這一字首的後面。預設值:tomcat-exec-;
maxThreads
:該執行緒池可以容納的最大執行緒數。預設值:200;
maxIdleTime
:在tomcat關閉一個空閒執行緒之前,允許空閒執行緒持續的時間(以毫秒為單位)。只有當前活躍的執行緒數大於minSpareThread的值,才會關閉空閒執行緒。預設值:60000(一分鐘)。
minSpareThreads
:Tomcat應該始終開啟的最小不活躍執行緒數。預設值:25。
2、參照執行緒池
<Connector executor="tomcatThreadPool" port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000" redirectPort="8443" />
PS:Connector 的一份最優配:一般情況下我們不使用Executor開啟執行緒池,我們在Connector上直接設定
<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="1000" minSpareThreads="100" acceptCount="1000" maxConnections="1000" connectionTimeout="20000" maxHttpHeaderSize="8192" tcpNoDelay="true" compression="on" disableUploadTimeout="true" redirectPort="8443" enableLookups="false" URIEncoding="UTF-8" />
maxThreads:最大執行緒數
minSpareThreads:最小執行緒數
acceptCount:接受最大佇列長度
maxConnections:最大連線數
connectionTimeout:超時等待時間 毫秒
maxHttpHeaderSize:請求頭最大值
tcpNoDelay:如果為true,伺服器socket會設定TCP_NO_DELAY選項,在大多數情況下可以提高效能。預設情況下設為true
compression:是否開啟壓縮GZIP on開啟 off 關閉 forde:所有情況下都壓縮
disableUploadTimeout:限定上傳時間
enableLookups:關閉DNS反向查詢,DNS反查很耗時間
AJP:協定是一個面向包的。web伺服器和servlet容器通過TCP連結進行互動,為了節省SOCKET建立的昂貴代價,WEB伺服器會嘗試維護一個永久TCP連結到Servlet容器,並在多個請求和響應週期過程會重用連結。
web客戶1存取tomcat伺服器的 資源index.jsp 是可以直接存取的,如果我們存取的是靜態資源,tomcat是不方便處理的它會把這些靜態資源返回給Apache伺服器,由他們返回給使用者,所以tomcat伺服器相對於nginx伺服器在處理靜態資源上效率較低。因此我們的網站伺服器一般是Nginx+tomcat,nginx負責處理靜態資源,因此AJP 協定我們在使用nginx+tomcat架構時可以關閉它來進行效率的優化。
註釋tomcat中server.xml中<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> 即可。
對jvm引數的優化我們主要是對堆記憶體的優化,堆記憶體分為三大塊年輕代、老年代、永久代。
如何分配這三個區域的大小:
如果我們的需求需要經常建立物件,且使用完畢後馬上會被回收,這樣的場景我們可以給年輕代分配較大空間。例如:對外提供一個查詢介面,返回json資料,這個介面被頻繁的呼叫,我們可以將這個服務的年輕代空間調大。
靜態變數較多時可以將老年代空間設定大一些。
1、設定堆記憶體大小
-Xms:JVM啟動初始化記憶體
-Xmx:JVM的最大堆記憶體,在JVM啟動以後會分配-Xmx引數指定的記憶體空間作為堆記憶體,但是不一定會全部使用,JVM會根據-Xmx引數來調整真正用於JVM的記憶體。
-Xmx 、-Xms之間的差值就是三個Virtual空間的大小。
2、年輕代
-xx:NewRatio=8 表示老年代與年輕代的比值是8:1
-XX:SurvivorRatio=32 表示eden與survivor的比值是32:1
-Xmn 表示設定年輕代的大小
3、永久代
-XX:PermSize=16m -XX:MaxPermSize=64M
4、Thread Stack(執行緒區)
-XX:Xss=128k
修改tomcat bin目錄下catalina.bat 或者catalina.sh檔案,修改內容如下
windows下 catalina.bat
rem --------------------------------------------------------------------------- set JAVA_OPTS=-Dfile.encoding=UTF-8 -server -Xms1024m -Xmx2048m -XX:NewSize=512m -XX:MaxNewSize=1024m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:MaxTenuringThreshold=10 -XX:NewRatio=2 -XX:+DisableExplicitGC setlocal
Linux下catalina.sh
# ----------------------------------------------------------------------------- JAVA_OPTS="-Dfile.encoding=UTF-8 -server -Xms1024m -Xmx2048m -XX:NewSize=512m -XX:MaxNewSize=1024m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:MaxTenuringThreshold=10 -XX:NewRatio=2 -XX:+DisableExplicitGC" # OS specific support. $var _must_ be set to either true or false.
引數說明:
#-Dfile.encoding:預設檔案編碼 #-Xms512m 設定JVM的最小記憶體為512m,此值可以設定與-Xmx相同以此避免每次垃圾回收完成後JVM重新分配記憶體。 #-Xmx1024 設定JVM的最大可用記憶體 #-XX:NewSize 設定年輕代大小 #-XX:MaxNewSize 設定年輕代最大記憶體大小 #-XX:PermSize 設定永久代大小 #-XX:MaxPermSize 設定永久代最大記憶體 #-XX:NewRatio=2 設定年輕代與老年代的比值 2 :表示年輕代與老年代的比值是1:2 #-XX:MaxTenuringThreshold 這種垃圾的最大年齡,預設是15 。 0:表示年輕代不經過Survivor區直接進入老年代,對於老年代較多的應用,設定為0可以提高效率。如果該值較大表示年輕代的物件會在Survivor區進行多次複製,以此增加物件在年輕代的存活時間,增加在年輕代被回收的概率。 #XX:+DisableExplicitGC 應用程式將忽略收到呼叫GC的程式碼。及System.GC()是一個空呼叫。
以上就是Tomcat使用者管理的優化設定詳解的詳細內容,更多關於Tomcat使用者管理優化設定的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45