溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

tomcat簡單操作

發(fā)布時間:2020-05-19 23:53:15 來源:網(wǎng)絡(luò) 閱讀:430 作者:mb5cd21e691f31a 欄目:云計算

Tomcat是由Apache軟件基金會下屬的Jakarta項目開發(fā)的一個servelet容器,按照Sun microsystems提供的技術(shù)
規(guī)范開發(fā)出來,Tomcat 8實現(xiàn)了對servlet 3.1和Javaserver page 2.3(JSP)的支持,并提供了作為web服務(wù)器
一些特有功能,如Tomcat管理和控制平臺、安全域管理和Tomcat附加組件等

  1. 安裝jdk和apache
    tomcat簡單操作

  2. 修改/etc/profile 末尾追加
    export JAVA_H0ME=/usr/local/jdk1.8.0_211
    export JRE_HOME=/usr/local/jdk1.8.0_211
    export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_H0ME/lib/dt.jar
    export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

    刷新一下 source /etc/profile
    查看一下 java -version
    tomcat簡單操作

  3. 啟動一下tomcat
    tomcat簡單操作
    4.查看一下端口
    tomcat簡單操作
  4. 測試一下

tomcat簡單操作
多實例(一個主機運行多個Tomcat)

  1. 復(fù)制一個tomcat配置文件
    cp -r /usr/local/tomcat /usr/local/tomcat2
  2. 修改/usr/local/tomcat2/conf/server.xml (把各個端口號加一)
    tomcat簡單操作
  3. 啟動tomcat2
    tomcat簡單操作
  4. 測試
    tomcat簡單操作

查看

JPS命令功能描述:jps是用于查有權(quán)限訪問的hotspot虛擬機(jdk中帶的虛擬機)的進(jìn)程
命令語法: jps [options] [hostid]
options:命令選項,用來對輸出格式進(jìn)行控制
-p 僅僅顯示vm標(biāo)識,不顯示jar,class,main參數(shù)等信息
-m 輸出主函數(shù)傳入的參數(shù)
-l 輸出應(yīng)用程序主類完整package名稱或jar完整名稱
-v 列出jvm參數(shù),-Xms20m -Xmx50m是啟動程序指定的jvm參數(shù)與
-V 輸出通過.hotsportrc或者-XX:Flags=<filename>指定的jvm參數(shù)
hostid:指定特定主機,可以使IP地址或域名,也可以指定具體協(xié)議,端口 [protocol:][//hostname][:port]
[servername]

配置
目錄結(jié)構(gòu)
程序目錄
tomcat簡單操作
——Tomcat執(zhí)行腳本目錄 conf ——Tomcat配置文件 lib ——Tomcat運行需要的庫文件(JARS) logs ——
Tomcat執(zhí)行時的LOG文件 temp ——Tomcat臨時文件存放目錄 webapps ——Tomcat的主要Web發(fā)布目錄(存
放我們自己的JSP,SERVLET,類) work ——Tomcat的工作目錄,Tomcat將翻譯JSP文件到的Java文件和class文件
放在這里
tomcat簡單操作
web工程發(fā)布目錄結(jié)構(gòu) webapps是
Tomcat的主要Web發(fā)布目錄,默認(rèn)情況下把Web應(yīng)用文件放于此目錄 項目名: 項目名下面有WEB-INF ,
META-INF,兩個文件夾,和一些給瀏覽器訪問的資源,如html文件;
WEB-INF:可以稱為是安全目錄,因為在這下面的文件,瀏覽器是訪問不到的,

  1. web.xml:Web應(yīng)用程序配置文件,描述了 servlet 和其他的應(yīng)用組件配置及命名規(guī)則。
  2. classes:包含所需要的 class 文件,包括 servlet class 和其他的一些class,他們不能包含在 .jar文件中。
  3. lib:存放web應(yīng)用需要的各種JAR文件
    META-INF:用來配置應(yīng)用程序、擴展程序、類加載器和服務(wù)

默認(rèn)webapps目錄結(jié)構(gòu)
docs:Tomcat幫助文檔 examples:web應(yīng)用實例 host-manager:主機管理 manager:應(yīng)用管理 ROOT:默認(rèn)站點根
目錄
配置文件
conf目錄主要是用來存放tomcat的一些配置文件。
server.xml 主配置文件 web.xml 與其他適用于整個web應(yīng)用程序設(shè)置的配置文件 context.xml 默認(rèn)的context設(shè)
置,應(yīng)用于安裝了Tomcat的所有主機的所有部署內(nèi)容 tomcat-users.xml用來配置管理tomcat的用戶與權(quán)限
catalina.xml Tomcat的安全防護(hù)策略文件
組件

  1. Server提供一個接口,由1至多個Service組成,讓其它程序可以訪問到這個Service集合,同時維護(hù)各個
    Service的生命周期,包括如何初始化,如何結(jié)束服務(wù),如何找到別人請求的服務(wù)。
  2. Service又由1-n個Connector及單個Container組成,只是在Container和Connector外多包了一層,提供各種
    服務(wù)
  3. Connector組件是可選擇替換的,負(fù)責(zé)接收瀏覽器發(fā)過來的TCP連接請求,創(chuàng)建Request/Response,分配線
    程,將創(chuàng)建的對象傳遞給Container來處理請求
  4. Container是容器的父接口,由四個容器組成,分別是Engine,Host,Context,Wrapper。其中Engine包
    含Host,Host包含Context,Content包含Wrapper,一個Servlet class對應(yīng)一個Wrapper
  5. Engine容器是作為頂級Container組件來設(shè)計的,由Host組成,其作用相當(dāng)于一個Container的門面。有了
    Engine,請求的處理過程變?yōu)椋簽g覽器發(fā)出請求,Connector接受請求,將請求交由Container(這里是
    Engine)處理,Container(Engine來擔(dān)當(dāng))查找請求對應(yīng)的Host并將請求傳遞給它,Host拿到請求后查
    找相應(yīng)的應(yīng)用上下文環(huán)境,準(zhǔn)備 servlet環(huán)境并調(diào)用service方法。
  6. Host容器是Engine的子容器,一個Host在Engine中代表一個虛擬主機,這個主機可以運行多個應(yīng)用,他
    負(fù)責(zé)安裝和展開這些應(yīng)用,并且標(biāo)識這個應(yīng)用,以便能夠區(qū)分他們。它的子容器通常是Context,他除了
    關(guān)聯(lián)子容器外,還保存一個主機應(yīng)有的信息。Host不是必需的,但是要運行 war程序,就必須要使用
    Host,因為在war中必有web.xml文件,這個文件解析就需要Host,如果有多個Host就需要定義一個top
    容器 Engine,而Engine沒有父容器,一個Engine就代表一個完整的Servlet引擎
  7. Context代表Servlet的Context,它具備Servlet運行的基本環(huán)境,理論上只要有Context就能運行Servlet,
    簡單的Tomcat可以沒有Engine和Host。其最重要的功能就是管理Servlet實例,Servlet實例在Context中是
    以Wrapper 出現(xiàn)的。
  8. Wrapper代表一個Servlet,它負(fù)責(zé)管理Servlet,包括裝載,初始化,執(zhí)行以及資源回收。它是最底層的
    容器。
  9. valve 閥門,攔截請求并在將其轉(zhuǎn)至對應(yīng)的webapp前進(jìn)行某種處理操作,可以用于任何容器中,比如記
    錄日志、基于ip做訪問控制
    配置文件解讀
    <?xml version="1.0" encoding="UTF-8"?>
    <Server port="8005" shutdown="SHUTDOWN">
    <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
    <Listener className="org.apache.catalina.core.AprLifecycleListener"
    SSLEngine="on" />
    <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"
    />
    <Listener
    className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
    <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener"
    />
    <GlobalNamingResources>
    <Resource name="UserDatabase" auth="Container"
    type="org.apache.catalina.UserDatabase"
    description="User database that can be updated and saved"
    factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
    pathname="conf/tomcat-users.xml" />
    </GlobalNamingResources>
    <Service name="Catalina">
    <Connector port="8080" protocol="HTTP/1.1"
    connectionTimeout="20000"
    redirectPort="8443" />
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
    <Engine name="Catalina" defaultHost="localhost">
    <Realm className="org.apache.catalina.realm.LockOutRealm">
    <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
    resourceName="UserDatabase"/>
    </Realm>
    <Host name="localhost" appBase="webapps"
    unpackWARs="true" autoDeploy="true">
    <Valve className="org.apache.catalina.valves.AccessLogValve"
    directory="logs"
    prefix="localhost_access_log" suffix=".txt"
    pattern="%h %l %u %t "%r" %s %b" />
    </Host>
    </Engine>
    </Service>
    </Server>

    engine是核心組件,負(fù)責(zé)通過connector接收用戶請求,并處理請求,將請求轉(zhuǎn)發(fā)至對應(yīng)的虛擬主機host上,
    defaulthost指定缺省的處理請求的主機名,它至少與其中呢一個host元素的name屬性值是一樣的 realm表示存
    放用戶名、密碼及role的數(shù)據(jù)庫
    tomcat簡單操作
    Tomcat Server處理一個http請求的過程 假設(shè)來自客戶的請求為: http://localhost:8080/wsota/wsota_index.jsp
    請求被發(fā)送到本機端口8080,被在那里偵聽的Coyote HTTP/1.1 Connector獲得 Connector把該請求交給它所在
    的Service的Engine來處理,并等待來自Engine的回應(yīng) Engine獲得請求localhost/wsota/wsota_index.jsp,匹配它
    所擁有的所有虛擬主機Host Engine匹配到名為localhost的Host(即使匹配不到也把請求交給該Host處理,因為
    該Host被定義為該Engine的默認(rèn)主機) localhost Host獲得請求/wsota/wsota_index.jsp,匹配它所擁有的所有
    Context Host匹配到路徑為/wsota的Context(如果匹配不到就把該請求交給路徑名為""的Context去處理)
    path="/wsota"的Context獲得請求/wsota_index.jsp,在它的mapping table中尋找對應(yīng)的servlet Context匹配到
    URL PATTERN為*.jsp的servlet,對應(yīng)于JspServlet類 構(gòu)造HttpServletRequest對象和HttpServletResponse對象,
    作為參數(shù)調(diào)用JspServlet的doGet或doPost方法 Context把執(zhí)行完了之后的HttpServletResponse對象返回給Host
    Host把HttpServletResponse對象返回給Engine Engine把HttpServletResponse對象返回給Connector Connector
    把HttpServletResponse對象返回給客戶browser
    tomcat簡單操作

自定義目錄
修改server.xml文件中的host元素 #appBase 定義站點目錄 #docBase 定義應(yīng)用目錄 #Context path 指出你的訪
問路徑(虛擬應(yīng)用名,可為空) #Context docBase 指定你的存放路徑 #debug 為設(shè)定dedug的登記,0提供最
少的信息,9提供最多的信息 #reloadable=true 當(dāng)web.xml或者class有改動的是后續(xù)都會自動更新加載,不需要
從新啟動服務(wù) #crosscontext="true" 表示配置的不同context共享一個session #unpackWARs 是否自動解壓war
包 #autoDeploy 是否自動部署(熱部署)
tomcat簡單操作
appBase 這個目錄表示: 這個目錄下面的子目錄將自動被部署為應(yīng)用(autoDeploy="true") 這個目錄下的war
文件將被自動解壓縮并部署為應(yīng)用(unpackWARs="true") 這個目錄下的子目錄,會當(dāng)做單獨的虛擬目錄,或
者叫應(yīng)用 如果不想使用Tomcat下的webapp目錄路,則appBase下面加一行docBase,把路徑配置到docBase
中,把appBase為空就可以了

自定義目錄

  1. 修改/usr/local/tomcat/conf/server.xml
    tomcat簡單操作
  2. 創(chuàng)建所需目錄和網(wǎng)頁
    [root@bogon ~]# mkdir  -p /data/project
    [root@bogon ~]# vim /data/project/index1.jsp
    [root@bogon ~]# vim /data/project/index2.jsp
  3. 修改112 /usr/local/tomcat/conf/web.xml

tomcat簡單操作

  1. 重啟tomcat
    tomcat簡單操作
  2. 查看端口
    tomcat簡單操作
  3. 測試
    tomcat簡單操作

自定義一個監(jiān)控頁面,通過web查看運行性能(類似phpinfo) server.xml如下設(shè)置

  1. 修改/usr/local/tomcat/conf/web.xml
    tomcat簡單操作
  2. 創(chuàng)建所需目錄和網(wǎng)頁
    tomcat簡單操作
    <%
    Runtime rtm = Runtime.getRuntime();
    long mm = rtm.maxMemory()/1024/1024;
    long tm = rtm.totalMemory()/1024/1024;
    long fm = rtm.freeMemory()/1024/1024;
    out.println("JVM memory detail info :<br>");
    out.println("Max memory:"+mm+"MB"+"<br>");
    out.println("Total memory: "+tm+"MB"+"<br>");
    out.println("Free memory: "+fm+"MB"+"<br>");
    out.println("Available memmory can be used is :"+(mm+fm-tm)+"MB"+"<br>");
    %>
  3. 重啟tomcat
    tomcat簡單操作
  4. 查看端口
    tomcat簡單操作
  5. 測試

tomcat簡單操作

遠(yuǎn)程監(jiān)控
Tomcat開啟JMX遠(yuǎn)程調(diào)試功能

  1. 修改/usr/local/tomcat/bin/catalina.sh
    tomcat簡單操作
  2. 配置認(rèn)證,配置jmxremote.access和jmxremote.password 進(jìn)入默認(rèn)按照jdk的目錄
    tomcat簡單操作
    修改/usr/local/jdk1.8.0_211/jre/lib/management/jmxremote.password
    tomcat簡單操作
    修改/usr/local/jdk1.8.0_211/jre/lib/management/jmxremote. Access
    tomcat簡單操作
  3. 限制口令文件讀取權(quán)限
    chmod 600 jmxremote.password jmxremote.access
  4. 重啟tomcat
    tomcat簡單操作
  5. 查看端口
    tomcat簡單操作
    6.測試

    tomcat簡單操作

    tomcat簡單操作
    tomcat簡單操作
    tomcat簡單操作

后臺
app manager
做這個的時候要把catalina.sh里邊寫入的東西刪除掉,否則Tomcat無法訪問到頁面

  1. 修改 修改/usr/local/tomcat/conf/tomcat-users.xml文件,配置manager角色、用戶名及密碼
    tomcat簡單操作
    tomcat簡單操作
  2. 修改/usr/local/tomcat/webapps/manager/META-INF/context.xml 20
    tomcat簡單操作
  3. 重啟tomcat
    tomcat簡單操作
  4. 查看端口
    tomcat簡單操作

  5. 測試
    tomcat簡單操作
    tomcat簡單操作

  6. 創(chuàng)建測試網(wǎng)頁
    tomcat簡單操作
  7. 打包網(wǎng)頁
    jar -cvf bdqn.war index.jsp
  8. 測試
    (1)
    tomcat簡單操作
    tomcat簡單操作
    tomcat簡單操作
    (2)
    tomcat簡單操作

    tomcat簡單操作
    tomcat簡單操作
    tomcat簡單操作

  9. 查看 /usr/local/tomcat/webapps/有沒有test

tomcat簡單操作

熱部署
tomcat的熱部署實現(xiàn)原理:tomcat啟動的時候會有啟動一個線程每隔一段時間會去判斷應(yīng)用中加載的類是否發(fā)生
變法(類總數(shù)的變化,類的修改),如果發(fā)生了變化就會把應(yīng)用的啟動線程停止掉,清除引用,并且把加載該應(yīng)
10-Tomcat.md 5/12/2019
18 / 23
用的WebappClassLoader設(shè)為null,然后創(chuàng)建一個新的WebappClassLoader來重新加載應(yīng)用。
<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
reloadable的作用是當(dāng)你修改了jsp之后會自動編譯class文件,等于即時生效,但是代價不低,適合本地
開發(fā)調(diào)試,一般在開發(fā)階段將reloadable的屬性設(shè)置為true,有助于調(diào)試servlet和其他的class文件,但是
由于這樣會增加服務(wù)器的運行負(fù)載,損耗系統(tǒng)性能,在項目運行階段將它設(shè)置為false
war包部署
直接將web項目文件(一般是復(fù)制生成的war包)復(fù)制到Tomcat的webapps目錄
如果Tomcat沒有開啟自解壓,則將war包解壓到webapps目錄
解壓命令jar(解壓到當(dāng)前目錄) jar -xf bdqnweb.war war包也可以使用unzip解壓,使用unzip命令的時候,可
以指定解壓目錄
安全
端口防護(hù)
修改目標(biāo)端口為不易猜測的端口,降低自動掃描軟件發(fā)現(xiàn)到的幾率
后臺管理
刪除默認(rèn)的管理后臺(如果不需要使用),降低被爆破和提權(quán)的風(fēng)險
刪除webapp下的host-manager和manager目錄
禁用目錄瀏覽
修改 conf/web.xml文件,將listings改為false
隱藏信息
盡量避免暴露服務(wù)器的版本信息,隱藏錯誤頁面。在配置中對一些常見的錯誤進(jìn)行重定向,避免出現(xiàn)錯誤時
Tomcat默認(rèn)顯示的錯誤頁面暴露服務(wù)器和版本信息;必須確保程序根目錄下的錯誤頁面已經(jīng)存在;
vim conf/web.xml
添加內(nèi)容

<error-page>
<error-code>404</error-code>
<location>/notfound.jsp</location>
</error-page>

重啟Tomcat,測試一下
firefox 192.168.43.249:8088/aaaaaaaaaaaaaaa

注意:這里的意思是說,如果是404的錯誤就找/目錄下的notfound.jsp,所以一定要知道自己的網(wǎng)頁根目錄在哪,并在這個目錄下創(chuàng)建notfound.jsp頁面,頁面內(nèi)容自己編輯 網(wǎng)頁根目錄是server.xml文件中 host 標(biāo)簽下的context標(biāo)簽里的docBase

tomcat簡單操作

tomcat簡單操作上邊web.xml中只寫了404報錯的,其他常見報錯也可以寫,比如

<error-page>
<error-code>403</error-code>
<location>/forbidden.jsp</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/notfound.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/systembusy.jsp</location>
</error-page>

腳本權(quán)限收回
去除其他用戶對Tomcat的bin目錄下的 shutdown.sh、startup.sh、catalina.sh的可執(zhí)行權(quán)限,防止其他用戶有
Tomcat的權(quán)限 chmod -R 744 /usr/local/apache-tomcat-8.5.35/bin/
日志規(guī)范
開啟Tomcat默認(rèn)訪問日志中的referer和user-agent記錄,開啟這兩個是為了一旦出現(xiàn)安全問題,能夠更好的根
據(jù)日志進(jìn)行問題排查
[root@localhost apache-tomcat-8.5.35]# vim conf/server.xml
原來是這樣:

<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs"
10-Tomcat.md 5/12/2019
20 / 23
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
修改后的樣子:
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t %r %s %b %{Referer}i %{User-Agent}i %D" />

主機管理器的使用 (末尾添加)

  1. 修改/usr/local/tomcat/conf/tomcat-users.xml
    tomcat簡單操作

<role rolename="admin-gui"/>
<user username="xgp" password="123.com" roles="admin-gui"/>

  1. 修改/usr/local/tomcat/webapps/host-manager/META-INF/context.xml
    tomcat簡單操作
  2. 重啟tomcat
    tomcat簡單操作
  3. 查看端口
    tomcat簡單操作
  4. 瀏覽器測試

    tomcat簡單操作
    tomcat簡單操作
    日志切割使用cronolog

  5. 編譯安裝Cronolog
    tomcat簡單操作
  6. 修改/usr/local/tomcat/bin/catalina.sh
    448 加注釋
    tomcat簡單操作
    找到第二個org.apache.catalina.starup.Bootstrap修改 472
    tomcat簡單操作
  7. 重啟tomcat
    tomcat簡單操作

  8. 查看端口
    tomcat簡單操作
  9. 測試
    tomcat簡單操作

定義錯誤頁面

  1. 修改/usr/local/tomcat/conf/web.xml 23
    tomcat簡單操作
  2. 創(chuàng)建所需網(wǎng)頁
    vim /usr/local/tomcat/webapps/ROOT/error.jsp
    tomcat簡單操作
  3. 重啟tomcat
    tomcat簡單操作
  4. 查看端口
    tomcat簡單操作
  5. 測試
    tomcat簡單操作

線程池優(yōu)化

  1. 修改/usr/local/tomcat/conf/server.xml 56
    tomcat簡單操作
    修改 69
    tomcat簡單操作

2.重啟tomcat
tomcat簡單操作

  1. 查看端口
    tomcat簡單操作

Tomcat優(yōu)化
1 /usr/local/tomcat/bin/catalina.sh 開頭添加
tomcat簡單操作

JAVA_OPTS="-Dfile.encoding=UTF-8
-server
-Xms1024M
-Xmx1024M
-XX:NewSize=512M
-XX:MaxNewSize=1024M
-XX:PermSize=256M
-XX:MaxPermSize=356M
-XX:NewRatio=2
-XX:ParallelGCThreads=15
-XX:+DisableExplicitGC"
-Xms:表示 JVM初始內(nèi)存大小,也可以說是Java 初始化堆的大小,-Xms 與-Xmx 設(shè)成一樣的值,避免 JVM 反復(fù)重新申請內(nèi)存,導(dǎo)致性能大起大落,默認(rèn)值為物理內(nèi)存的 1/64
-Xmx:表示最大 Java 堆大小,當(dāng)應(yīng)用程序需要的內(nèi)存超出堆的最大值時虛擬機就會提示內(nèi)存溢出,并且導(dǎo)致應(yīng)用服務(wù)崩潰,因此一般建議堆的最大值設(shè)置為可用內(nèi)存的最大值的80%。
-Xmn:設(shè)置JVM最小內(nèi)存(128-256就夠了,一般不設(shè)置)
-XX:NewSize:設(shè)置新生代內(nèi)存大小。 新生代,對象新創(chuàng)建的時候分配的內(nèi)存空間,老生代在垃圾回收器回收過后該對象依然沒有被回收,該對象就會移動到老生代
-XX:PermSize:設(shè)置持久代內(nèi)存大小,用于存放靜態(tài)文件,如今Java類、方法等。持久代對垃圾回收沒有顯著影響,但是有些應(yīng)
用可能動態(tài)生成或者調(diào)用一些class,持久帶也稱為方法區(qū),方法區(qū)存儲每一個java類的結(jié)構(gòu)信息:比如運行時常量池,字段和方法數(shù)據(jù),構(gòu)造函數(shù)和普通方法的字節(jié)碼內(nèi)容以及類、實例、接口初始化時需要使用到的特殊方法等數(shù)據(jù),JDK8中已經(jīng)把持久代(PermGen Space) 干掉了,取而代之的元空間(Metaspace)。Metaspace占用的是本地內(nèi)存,不再占用虛擬機內(nèi)存。
-XX:MaxPermSize:設(shè)置最大值持久代內(nèi)存大小,永久代不屬于堆內(nèi)存,堆內(nèi)存只包含新生代和老年代
-XX:NewRatio:改變新舊空間的比例,意思是新空間的尺寸是舊空間的1/8(默認(rèn)為8)
-XX:ParallelGCThreads 可用來增加并行度,需要多cpu
-XX:+DisableExplicitGC:關(guān)閉System.gc(),簡單理解就是關(guān)閉java中的內(nèi)存回收機制

2.重啟tomcat
tomcat簡單操作

  1. 查看端口
    tomcat簡單操作
  2. 測試
    tomcat簡單操作

Tomcat的請求方式
Tomcat支持三種接收請求的方式:BIO NIO APR
1、BIO:每個請求都要創(chuàng)建一個線程來處理,線程開銷比較大,不適用高并發(fā)的場景,性能也最低
2、NIO:基于緩沖區(qū),能提供非阻塞I/O操作,和傳統(tǒng)的BIO相比,具備更好的并發(fā)性能
3、APR(Apache portable run-time libraries):簡單理解,就是從操作系統(tǒng)級別解決異步IO問題,大幅度的提高服務(wù)器的處理和相應(yīng)性能,也是Tomcat運行高并發(fā)的首選模式
APR提供的主要功能模塊包括:內(nèi)存分配及內(nèi)存池、原子操作、文件I/O、鎖、內(nèi)存映射、哈希表、網(wǎng)絡(luò)I/O、輪詢、進(jìn)程及線程操作等等,通過采用APR,Tomcat可以獲得高度可擴展性以及優(yōu)越的性能,并且可以更好的與本地服務(wù)器技術(shù)集成,從而可以使Tomcat作為一款通用的Web服務(wù)器使用,而不僅僅作為輕量級應(yīng)用服務(wù)器。在這種情況下,Java將不再是一門側(cè)重于后端的編程語言,也可以更多的用于成熟的Web服務(wù)器平臺。
Excutor重要參數(shù)說明:

  1. name:共享線程池的名字,這是connector為了共享線程池要引用的名字,改名字必須唯一
  2. namePrefix:在JVM上,每運行線程都可以有一個name字符串,這一屬性為線程池中每個線程的name字
    符串設(shè)置了一個前綴,Tomcat將把線程號追加到這一前綴后面,默認(rèn)值為tomcat-exec-
  3. maxThreads:該線程池可以容納的最大線程數(shù),默認(rèn)200
  4. maxIdleTime:在Tomcat關(guān)閉一個空閑線程之前,允許空閑線程持續(xù)的時間(單位為毫秒)。只有當(dāng)前
    活躍的線程數(shù)大于minSpareThread的值,才會關(guān)閉空閑進(jìn)程,默認(rèn)值60000,一分鐘
  5. minSpareThreads:Tomcat應(yīng)該始終打開的最小不活躍線程數(shù),默認(rèn)25
  6. threadPriority:線程的等級
    Connector重要參數(shù)說明
  7. executor:表示使用參數(shù)值對應(yīng)的線程池
  8. minProcessors:服務(wù)器啟動時創(chuàng)建的處理請求的線程數(shù)
  9. maxProcessors:最大可以創(chuàng)建的處理請求的進(jìn)程數(shù)
  10. acceptCount:指定當(dāng)前所有可以使用的處理請求的線程數(shù)都被使用時,可以放到處理隊列中的請求數(shù),
    超過這個數(shù)的請求不予處理
    處理方式
    org.apache.coyote.http11.Http11NioProtocol :表示nio處理類
    org.apache.coyote.http11.Http11AprProtocol :表示apr 模式
    HTTP/1.1 : 表示bio模式
    APR提供的主要功能模塊包括:內(nèi)存分配及內(nèi)存池、原子操作、文件I/O、鎖、內(nèi)存映射、哈希表、網(wǎng)絡(luò)
    I/O、輪詢、進(jìn)程及線程操作等等,通過采用APR,Tomcat可以獲得高度可擴展性以及優(yōu)越的性能,并且
    可以更好的與本地服務(wù)器技術(shù)集成,從而可以使Tomcat作為一款通用的Web服務(wù)器使用,而不僅僅作為
    輕量級應(yīng)用服務(wù)器。在這種情況下,Java將不再是一門側(cè)重于后端的編程語言,也可以更多的用于成熟
    的Web服務(wù)器平臺。
  11. /usr/local/tomcat/conf/server.xml 修改
    tomcat簡單操作
  12. 重啟tomcat
    tomcat簡單操作
    3.查看端口
    tomcat簡單操作
向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI