1
首先確保服務(wù)器的jdk版本。
02
到官網(wǎng)下載最新版本的安裝包,選擇Quick installer。
https://www.oracle.com/middleware/technologies/weblogic-server-installers-downloads.html
03
下載之后是個(gè)zip文件,在本地解壓,執(zhí)行mkdir /opt/weblogic-generic14
04
在/opt目錄下創(chuàng)建目錄存放jar包把解壓后的jar包文件上傳到所創(chuàng)建的目錄下。
注意:root用戶下會(huì)安裝失敗,使用useradd weblogic創(chuàng)建用戶weblogic
設(shè)置該用戶下的環(huán)境變量,添加java options,否則后續(xù)的bi會(huì)報(bào)出X11 window錯(cuò)誤而無(wú)法查看報(bào)告。
設(shè)置為:
export JAVA_HOME=/usr/java
export CLASSPATH=.:$JAVA_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$PATH
JAVA_OPTIONS="${JAVA_OPTIONS} -Djava.awt.headless=true"
export JAVA_OPTIONS
05
使用的centos7沒(méi)有圖形界面,需要通過(guò)靜默安裝的方式來(lái)安裝。
mkdir /opt/weblogic-generic14/oraInventory,mkdir wls1411創(chuàng)建安裝所需要的目錄。
06
使用vim wls.rsp創(chuàng)建配置文件,注意不能有中文注釋和多余的空格
[ENGINE]
Response File Version=1.0.0.0.0
[GENERIC]
ORACLE_HOME=/opt/weblogic-generic14/wls1411
INSTALL_TYPE=WebLogic Server
MYORACLESUPPORT_USERNAME=
MYORACLESUPPORT_PASSWORD=
DECLINE_SECURITY_UPDATES=ture
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false
PROXY_HOST=
PROXY_PORT=
PROXY_USER=
PROXY_PWD=
COLLECTOR_SUPPORTTHUB_URL=
再創(chuàng)建另一個(gè)配置文件vim oraInst.loc
Inventory_loc=/opt/weblogic-generic14/oraInventory
Inst_group=weblogic
07
執(zhí)行chown -R weblogic:weblogic /opt/weblogic-generic14把整個(gè)目錄的從屬遞歸設(shè)置為weblogic用戶
08
執(zhí)行su weblogic切換到該用戶,注意一定要切換到非root用戶
cd /opt/weblogic-generic14進(jìn)入到該目錄下,
執(zhí)行java -jar fmw_14.1.1.0.0_wls_lite_generic.jar -silent -responseFile /opt/weblogic-generic14/wls.rsp -invPtrLoc /opt/weblogic-generic14/oraInst.loc
顯示如上信息,表示已經(jīng)安裝完成
09
然后創(chuàng)建目錄用于配置域
mkdir -p /opt/weblogic-generic14/wls1411/user_projects/domains/base_domain/
10
執(zhí)行wlst.sh文件
cd /opt/weblogic-generic14/wls1411/wlserver/common/bin/
./wlst.sh
11
隨后會(huì)進(jìn)入類似mysql>這樣的終端,然后使用命令進(jìn)行域相關(guān)的配置
wls:/offline>readTemplateForUpdate('/opt/weblogic-generic14/wls1411/wlserver/common/templates/wls/wls.jar')
wls:/offline/base_domain>cd ('Server/AdminServer')
wls:/offline/base_domain/Server/AdminServer>set('ListenAddress','')
wls:/offline/base_domain/Server/AdminServer>set('ListenPort',9100)//端口號(hào)配置
wls:/offline/base_domain/Server/AdminServer>cd('/')
wls:/offline/base_domain>cd('Security/base_domain/User/weblogic')//用戶名
wls:/offline/base_domain/Security/base_domain/User/weblogic>cmo.setPassword('Yonghong123')//密碼
wls:/offline/base_domain/Security/base_domain/User/weblogic>setOption('OverwriteDomain','true')
wls:/offline/base_domain/Security/base_domain/User/weblogic>writeDomain('/opt/weblogic-generic14/wls1411/user_projects/domains/base_domain/')
wls:/offline/base_domain/Security/base_domain/User/weblogic>closeTemplate()
wls:/offline>exit()
12
配置完之后即可啟動(dòng)服務(wù),可選擇前臺(tái)或者后臺(tái)啟動(dòng),下述命令可使其后臺(tái)運(yùn)行
nohup ./startWeblogic.sh &
13
瀏覽器輸入192.168.1.146:9100/console,即可完成訪問(wèn),登錄上面設(shè)置的用戶名weblogic,密碼Yonghong123,然后可使用war包部署bi。
14
部署項(xiàng)目的話,首先要把war包放置在weblogic的根目錄下,然后登陸進(jìn)wenlogic的頁(yè)面,在左側(cè)樹(shù)狀欄目中點(diǎn)擊【部署】,然后在右邊點(diǎn)擊【安裝】,選擇傳入進(jìn)去的war包,點(diǎn)擊下一步,選擇【將此部署安裝為應(yīng)用程序】再下一步
要注意名稱,名稱是bi的話,就通過(guò)192.168.1.146:9100/bi來(lái)進(jìn)行訪問(wèn);再點(diǎn)擊【完成】即可完成部署。
一些注意事項(xiàng):
為了保證永洪提供的各種Demo的正常使用,建議需要部署的服務(wù)器上安裝永洪產(chǎn)品,安裝完成后確認(rèn)BI服務(wù)可以正常使用后即可關(guān)閉該服務(wù)。之后將永洪bi.home的絕對(duì)路徑提供給永洪申請(qǐng)war包。
15
將永洪提供的用于Weblogic部署的war(若如特殊要求一般是bi.war)拷貝到要部署的服務(wù)器上,可以查看bi.war下的WEB-INF/web.xml,確認(rèn)其中的bi.home路徑和要部署的環(huán)境一致。
(注:紅框中為所在環(huán)境的對(duì)應(yīng)目錄)
16
進(jìn)入weblogic控制臺(tái),在“部署”節(jié)點(diǎn)下,點(diǎn)擊“安裝”
17
選中要部署的bi.war,然后點(diǎn)擊下一步
18
選擇“將此部署安裝為應(yīng)用程序”,點(diǎn)擊下一步
19
點(diǎn)擊“完成”按鈕即可完成部署。
20
部署完成后,會(huì)自動(dòng)啟動(dòng)服務(wù),并自動(dòng)跳轉(zhuǎn)到“部署概要”頁(yè)面顯示相關(guān)成功信息。
常見(jiàn)問(wèn)題處理:
bi.war\WEB-INF\weblogic.xml中定義了優(yōu)先使用BI應(yīng)用中的類,如果有需要可以手動(dòng)修改添加,添加完成后重啟一下應(yīng)用即可。
平時(shí)使用 tomcat 等 web 服務(wù)器不可謂不多,但是一直一知半解。
于是想著自己實(shí)現(xiàn)一個(gè)簡(jiǎn)單版本,學(xué)習(xí)一下 tomcat 的精髓。
Tomcat 就像一個(gè)餐館的廚房,它負(fù)責(zé)接收顧客(用戶)的點(diǎn)餐(請(qǐng)求),然后根據(jù)菜單(你的 Java Web 應(yīng)用)來(lái)制作菜肴(生成網(wǎng)頁(yè))。
這個(gè)過(guò)程中,廚師(Tomcat)需要遵循一定的食譜(Servlet 和 JSP 規(guī)范),確保每個(gè)菜肴(網(wǎng)頁(yè))都符合顧客的期待。
1.接收請(qǐng)求:當(dāng)用戶通過(guò)瀏覽器訪問(wèn)網(wǎng)站時(shí),Tomcat 會(huì)接收到這個(gè)請(qǐng)求。2.處理請(qǐng)求:Tomcat 會(huì)根據(jù)請(qǐng)求的內(nèi)容,找到對(duì)應(yīng)的 Java 程序(Servlet 或 JSP 頁(yè)面)來(lái)處理這個(gè)請(qǐng)求。3.生成響應(yīng):處理完請(qǐng)求后,Tomcat 會(huì)生成一個(gè)響應(yīng),通常是一個(gè)新的網(wǎng)頁(yè),然后發(fā)送回用戶的瀏覽器。
1.開(kāi)源免費(fèi):Tomcat 是完全開(kāi)源的,這意味著你可以免費(fèi)使用它,并且可以看到它的源代碼。2.輕量級(jí):相比于其他一些 Java 應(yīng)用服務(wù)器,Tomcat 更輕量,啟動(dòng)更快,占用資源更少。3.易于使用:Tomcat 的配置相對(duì)簡(jiǎn)單,容易上手,適合初學(xué)者和小型項(xiàng)目。4.廣泛支持:由于 Tomcat 的流行,很多 Java Web 開(kāi)發(fā)相關(guān)的工具和框架都支持 Tomcat。
1.下載安裝:從 Apache 官網(wǎng)下載 Tomcat,然后解壓到一個(gè)目錄。2.部署應(yīng)用:將你的 Java Web 應(yīng)用(通常是 WAR 文件)放到 Tomcat 的 webapps 目錄下。3.啟動(dòng)服務(wù):運(yùn)行 Tomcat 的啟動(dòng)腳本(比如 startup.bat 或 startup.sh),Tomcat 就會(huì)開(kāi)始監(jiān)聽(tīng)網(wǎng)絡(luò)請(qǐng)求。4.訪問(wèn)應(yīng)用:在瀏覽器中輸入 Tomcat 的地址(通常是 http://localhost:8080),你就可以看到應(yīng)用的首頁(yè)了。
?功能有限:對(duì)于大型企業(yè)級(jí)應(yīng)用,Tomcat 可能不夠強(qiáng)大,因?yàn)樗鄙僖恍└呒?jí)功能,比如復(fù)雜的事務(wù)管理、安全性等。?性能問(wèn)題:雖然 Tomcat 輕量,但在高并發(fā)的情況下,它可能不如專業(yè)的應(yīng)用服務(wù)器表現(xiàn)出色。
Tomcat 就像一個(gè)小型的餐館廚房,它適合做一些簡(jiǎn)單的菜肴(小型 Web 應(yīng)用),而且成本低廉,操作簡(jiǎn)便。
但如果你要舉辦一場(chǎng)大型的宴會(huì)(大型 Web 應(yīng)用),可能就需要一個(gè)更大、更專業(yè)的廚房(如 JBoss、WebLogic 等)了。
Tomcat就像是一個(gè)用Java語(yǔ)言搭起來(lái)的大舞臺(tái),專門(mén)用來(lái)演出那些用Java編寫(xiě)的網(wǎng)頁(yè)劇。想要玩得轉(zhuǎn)Tomcat,你最好對(duì)Java語(yǔ)言有所了解。
搭建Tomcat的過(guò)程,就像是搭積木。首先,你得用Java寫(xiě)一個(gè)啟動(dòng)類,這個(gè)類就是整個(gè)服務(wù)器的大腦。然后,用Java的ServerSocket這個(gè)工具來(lái)監(jiān)聽(tīng)網(wǎng)絡(luò)上的敲門(mén)聲,也就是連接請(qǐng)求。一旦有人來(lái)敲門(mén),服務(wù)器就得看看人家想要啥,然后根據(jù)需求給出回應(yīng)。
接下來(lái),我們要讓服務(wù)器學(xué)會(huì)處理網(wǎng)頁(yè)請(qǐng)求。這就需要一個(gè)叫做Servlet的小家伙,它是一個(gè)接口,你需要寫(xiě)一個(gè)類來(lái)實(shí)現(xiàn)這個(gè)接口。這個(gè)類得有幾個(gè)特定的動(dòng)作,比如準(zhǔn)備(init())、服務(wù)(service())和收工(destroy())。在服務(wù)動(dòng)作里,Servlet得判斷人家是用什么方式來(lái)請(qǐng)求的,比如是GET還是POST,然后做出相應(yīng)的反應(yīng)。
服務(wù)器還得能處理那些不需要服務(wù)器現(xiàn)場(chǎng)制作的靜態(tài)文件,比如圖片、網(wǎng)頁(yè)模板或者CSS樣式表。這些文件就像是現(xiàn)成的道具,直接從硬盤(pán)里拿出來(lái)給人家就行。
當(dāng)然,對(duì)于那些需要服務(wù)器現(xiàn)場(chǎng)制作的動(dòng)態(tài)網(wǎng)頁(yè),比如JSP,服務(wù)器就得根據(jù)請(qǐng)求的信息,現(xiàn)場(chǎng)編個(gè)網(wǎng)頁(yè),然后發(fā)回去。
此外,服務(wù)器還得能處理基本的網(wǎng)頁(yè)請(qǐng)求,比如GET和POST,并且能讀懂人家的請(qǐng)求信息,知道人家想訪問(wèn)哪個(gè)頁(yè)面,還帶了什么額外的信息。
控制服務(wù)器的開(kāi)關(guān)也很重要。你得寫(xiě)個(gè)方法來(lái)控制服務(wù)器的啟動(dòng)和停止。啟動(dòng)時(shí),要準(zhǔn)備好要用的東西,比如確定用哪個(gè)端口號(hào),設(shè)置好線程池。關(guān)閉時(shí),要確保資源都收拾干凈,網(wǎng)絡(luò)連接也都斷開(kāi)。
最后,你可以通過(guò)編寫(xiě)幾個(gè)簡(jiǎn)單的Servlet和一些靜態(tài)文件,然后在瀏覽器里測(cè)試你的服務(wù)器。確保服務(wù)器能夠正確處理各種請(qǐng)求,并且返回正確的結(jié)果。
雖然這只是Tomcat的入門(mén)階段,但要打造一個(gè)完整的Tomcat,還有很多東西要考慮,比如怎么讓多個(gè)請(qǐng)求同時(shí)處理(多線程)、怎么高效管理數(shù)據(jù)庫(kù)連接(連接池)、怎么記住每個(gè)訪客的身份(會(huì)話管理)、怎么保護(hù)服務(wù)器不受壞蛋的攻擊(安全問(wèn)題)等等。
咱們可以一步步來(lái),先搞定這些基本的,再慢慢增加新的功能。
/\_/\
( o.o )
> ^ <
mini-cat 是簡(jiǎn)易版本的 tomcat 實(shí)現(xiàn)。別稱嗅虎(心有猛虎,輕嗅薔薇。)
開(kāi)源地址:https://github.com/houbb/minicat
?
簡(jiǎn)單的啟動(dòng)實(shí)現(xiàn)/netty 支持
?
servlet 支持
?
靜態(tài)網(wǎng)頁(yè)支持
?
filter/listener 支持
?
wars 支持
<dependency>
<groupId>com.github.houbb</groupId>
<artifactId>minicat</artifactId>
<version>0.7.0</version>
</dependency>
運(yùn)行測(cè)試類 MiniCatBootstrapMain#main
MiniCatBootstrap bootstrap=new MiniCatBootstrap();
bootstrap.start();
啟動(dòng)日志:
[INFO] [2024-04-03 11:09:15.178] [main] [c.g.h.m.s.s.WebXmlServletManager.register] - [MiniCat] register servlet, url=/my, servlet=com.github.houbb.minicat.support.servlet.MyMiniCatHttpServlet
[INFO] [2024-04-03 11:09:15.180] [Thread-0] [c.g.h.m.b.MiniCatBootstrap.startSync] - [MiniCat] start listen on port 8080
[INFO] [2024-04-03 11:09:15.180] [Thread-0] [c.g.h.m.b.MiniCatBootstrap.startSync] - [MiniCat] visit url http://127.0.0.1:8080
頁(yè)面訪問(wèn):http://127.0.0.1:8080
響應(yīng):
http://127.0.0.1:8080
servlet: http://127.0.0.1:8080/my
html: http://127.0.0.1:8080/index.html
開(kāi)源地址:https://github.com/houbb/minicat
開(kāi)源不易,歡迎 fork+star~ 鼓勵(lì)一下作者
點(diǎn)擊 {閱讀原文},獲得更好的閱讀體驗(yàn)
從零手寫(xiě)實(shí)現(xiàn) apache Tomcat-01-入門(mén)介紹[1]
從零手寫(xiě)實(shí)現(xiàn) apache Tomcat-02-web.xml 入門(mén)詳細(xì)介紹[2]
從零手寫(xiě)實(shí)現(xiàn) tomcat-03-基本的 socket 實(shí)現(xiàn)[3]
從零手寫(xiě)實(shí)現(xiàn) tomcat-04-請(qǐng)求和響應(yīng)的抽象[4]
從零手寫(xiě)實(shí)現(xiàn) tomcat-05-servlet 處理支持[5]
從零手寫(xiě)實(shí)現(xiàn) tomcat-06-servlet bio/thread/nio/netty 池化處理[6]
從零手寫(xiě)實(shí)現(xiàn) tomcat-07-war 如何解析處理三方的 war 包?[7]
從零手寫(xiě)實(shí)現(xiàn) tomcat-08-tomcat 如何與 springboot 集成?[8]
從零手寫(xiě)實(shí)現(xiàn) tomcat-09-servlet 處理類[9]
從零手寫(xiě)實(shí)現(xiàn) tomcat-10-static resource 靜態(tài)資源文件[10]
從零手寫(xiě)實(shí)現(xiàn) tomcat-11-filter 過(guò)濾器[11]
從零手寫(xiě)實(shí)現(xiàn) tomcat-12-listener 監(jiān)聽(tīng)器[12]
如果你對(duì) tomcat 不是很熟,可以閱讀下面的系列。
目前的最新版本, tomcat11:
web server apache tomcat11-01-官方文檔入門(mén)介紹[13]
web server apache tomcat11-02-setup 啟動(dòng)[14]
web server apache tomcat11-03-deploy 如何部署[15]
web server apache tomcat11-04-manager 如何管理?[16]
web server apache tomcat11-06-Host Manager App -- Text Interface[17]
web server apache tomcat11-07-Realm Configuration[18]
web server apache tomcat11-08-JNDI Resources[19]
web server apache tomcat11-09-JNDI Datasource[20]
web server apache tomcat11-10-Class Loader[21]
web server apache tomcat11-11-Jasper 2 JSP Engine[22]
web server apache tomcat11-12-SSL/TLS Configuration[23]
web server apache tomcat11-13-SSI[24]
web server apache tomcat11-14-CGI[25]
web server apache tomcat11-15-proxy[26]
web server apache tomcat11-16-mbean[27]
web server apache tomcat11-17-default-servlet[28]
web server apache tomcat11-18-clusting 集群[29]
web server apache tomcat11-19-load balance 負(fù)載均衡[30]
web server apache tomcat11-20-connectors 連接器[31]
web server apache tomcat11-21-monitor and management 監(jiān)控與管理[32]
web server apache tomcat11-22-logging 日志[33]
web server apache tomcat11-23-APR[34]
web server apache tomcat11-24-Virtual Hosting and Tomcat[35]
web server apache tomcat11-25-Advanced IO and Tomcat[36]
web server apache tomcat11-26-maven jars[37]
web server apache tomcat11-27-Security Considerations[38]
web server apache tomcat11-28-Windows Service[39]
web server apache tomcat11-29-Windows Authentication[40]
web server apache tomcat11-30-The Tomcat JDBC Connection Pool[41]
web server apache tomcat11-31-websocket[42]
web server apache tomcat11-32-rewrite[43]
web server apache tomcat11-33-CDI[44]
web server apache tomcat11-34-Ahead of Time compilation support[45]
[1] 從零手寫(xiě)實(shí)現(xiàn) apache Tomcat-01-入門(mén)介紹: https://houbb.github.io/2016/11/07/web-server-tomcat-02-hand-write-overview
[2] 從零手寫(xiě)實(shí)現(xiàn) apache Tomcat-02-web.xml 入門(mén)詳細(xì)介紹: https://houbb.github.io/2016/11/07/web-server-tomcat-02-hand-write-web-xml
[3] 從零手寫(xiě)實(shí)現(xiàn) tomcat-03-基本的 socket 實(shí)現(xiàn): https://houbb.github.io/2016/11/07/web-server-tomcat-03-hand-write-simple-socket
[4] 從零手寫(xiě)實(shí)現(xiàn) tomcat-04-請(qǐng)求和響應(yīng)的抽象: https://houbb.github.io/2016/11/07/web-server-tomcat-04-hand-write-request-and-resp
[5] 從零手寫(xiě)實(shí)現(xiàn) tomcat-05-servlet 處理支持: https://houbb.github.io/2016/11/07/web-server-tomcat-05-hand-write-servlet-web-xml
[6] 從零手寫(xiě)實(shí)現(xiàn) tomcat-06-servlet bio/thread/nio/netty 池化處理: https://houbb.github.io/2016/11/07/web-server-tomcat-06-hand-write-thread-pool
[7] 從零手寫(xiě)實(shí)現(xiàn) tomcat-07-war 如何解析處理三方的 war 包?: https://houbb.github.io/2016/11/07/web-server-tomcat-07-hand-write-war
[8] 從零手寫(xiě)實(shí)現(xiàn) tomcat-08-tomcat 如何與 springboot 集成?: https://houbb.github.io/2016/11/07/web-server-tomcat-08-hand-write-embed
[9] 從零手寫(xiě)實(shí)現(xiàn) tomcat-09-servlet 處理類: https://houbb.github.io/2016/11/07/web-server-tomcat-09-hand-write-servlet
[10] 從零手寫(xiě)實(shí)現(xiàn) tomcat-10-static resource 靜態(tài)資源文件: https://houbb.github.io/2016/11/07/web-server-tomcat-10-hand-write-static-resource
[11] 從零手寫(xiě)實(shí)現(xiàn) tomcat-11-filter 過(guò)濾器: https://houbb.github.io/2016/11/07/web-server-tomcat-11-hand-write-filter
[12] 從零手寫(xiě)實(shí)現(xiàn) tomcat-12-listener 監(jiān)聽(tīng)器: https://houbb.github.io/2016/11/07/web-server-tomcat-12-hand-write-listener
[13] web server apache tomcat11-01-官方文檔入門(mén)介紹: https://houbb.github.io/2016/11/07/web-server-tomcat11-doc-01-intro
[14] web server apache tomcat11-02-setup 啟動(dòng): https://houbb.github.io/2016/11/07/web-server-tomcat11-doc-02-setup
[15] web server apache tomcat11-03-deploy 如何部署: https://houbb.github.io/2016/11/07/web-server-tomcat11-doc-03-deploy
[16] web server apache tomcat11-04-manager 如何管理?: https://houbb.github.io/2016/11/07/web-server-tomcat11-doc-04-manager
[17] web server apache tomcat11-06-Host Manager App -- Text Interface: https://houbb.github.io/2016/11/07/web-server-tomcat11-doc-06-host-manager
[18] web server apache tomcat11-07-Realm Configuration: https://houbb.github.io/2016/11/07/web-server-tomcat11-doc-07-relam
[19] web server apache tomcat11-08-JNDI Resources: https://houbb.github.io/2016/11/07/web-server-tomcat11-doc-08-jndi
[20] web server apache tomcat11-09-JNDI Datasource: https://houbb.github.io/2016/11/07/web-server-tomcat11-doc-09-jdbc-datasource
[21] web server apache tomcat11-10-Class Loader: https://houbb.github.io/2016/11/07/web-server-tomcat11-doc-10-classloader-howto
[22] web server apache tomcat11-11-Jasper 2 JSP Engine: https://houbb.github.io/2016/11/07/web-server-tomcat11-doc-11-jsps
[23] web server apache tomcat11-12-SSL/TLS Configuration: https://houbb.github.io/2016/11/07/web-server-tomcat11-doc-12-ssl
[24] web server apache tomcat11-13-SSI: https://houbb.github.io/2016/11/07/web-server-tomcat11-doc-13-ssi
[25] web server apache tomcat11-14-CGI: https://houbb.github.io/2016/11/07/web-server-tomcat11-doc-14-cgi
[26] web server apache tomcat11-15-proxy: https://houbb.github.io/2016/11/07/web-server-tomcat11-doc-15-proxy
[27] web server apache tomcat11-16-mbean: https://houbb.github.io/2016/11/07/web-server-tomcat11-doc-16-mbean
[28] web server apache tomcat11-17-default-servlet: https://houbb.github.io/2016/11/07/web-server-tomcat11-doc-17-default-servlet
[29] web server apache tomcat11-18-clusting 集群: https://houbb.github.io/2016/11/07/web-server-tomcat11-doc-18-clusting
[30] web server apache tomcat11-19-load balance 負(fù)載均衡: https://houbb.github.io/2016/11/07/web-server-tomcat11-doc-19-load-balance
[31] web server apache tomcat11-20-connectors 連接器: https://houbb.github.io/2016/11/07/web-server-tomcat11-doc-20-connectors
[32] web server apache tomcat11-21-monitor and management 監(jiān)控與管理: https://houbb.github.io/2016/11/07/web-server-tomcat11-doc-21-monitor
[33] web server apache tomcat11-22-logging 日志: https://houbb.github.io/2016/11/07/web-server-tomcat11-doc-22-logging
[34] web server apache tomcat11-23-APR: https://houbb.github.io/2016/11/07/web-server-tomcat11-doc-23-apr
[35] web server apache tomcat11-24-Virtual Hosting and Tomcat: https://houbb.github.io/2016/11/07/web-server-tomcat11-doc-24-virtual-host
[36] web server apache tomcat11-25-Advanced IO and Tomcat: https://houbb.github.io/2016/11/07/web-server-tomcat11-doc-25-aio
[37] web server apache tomcat11-26-maven jars: https://houbb.github.io/2016/11/07/web-server-tomcat11-doc-26-maven-jars
[38] web server apache tomcat11-27-Security Considerations: https://houbb.github.io/2016/11/07/web-server-tomcat11-doc-27-security
[39] web server apache tomcat11-28-Windows Service: https://houbb.github.io/2016/11/07/web-server-tomcat11-doc-28-windows-service
[40] web server apache tomcat11-29-Windows Authentication: https://houbb.github.io/2016/11/07/web-server-tomcat11-doc-29-windows-auth
[41] web server apache tomcat11-30-The Tomcat JDBC Connection Pool: https://houbb.github.io/2016/11/07/web-server-tomcat11-doc-30-tomcat-jdbc-pool
[42] web server apache tomcat11-31-websocket: https://houbb.github.io/2016/11/07/web-server-tomcat11-doc-31-websocket
[43] web server apache tomcat11-32-rewrite: https://houbb.github.io/2016/11/07/web-server-tomcat11-doc-32-rewrite
[44] web server apache tomcat11-33-CDI: https://houbb.github.io/2016/11/07/web-server-tomcat11-doc-33-cdi
[45] web server apache tomcat11-34-Ahead of Time compilation support: https://houbb.github.io/2016/11/07/web-server-tomcat11-doc-34-aot
Tomcat是Apache軟件基金會(huì)(Apache Software Foundation)的Jakarta 項(xiàng)目中的一個(gè)核心項(xiàng)目,由Apache、Sun和其他一些公司及個(gè)人共同開(kāi)發(fā)而成。
Tomcat服務(wù)器是一個(gè)免費(fèi)的開(kāi)放源代碼的Web應(yīng)用服務(wù)器,屬于輕量級(jí)應(yīng)用服務(wù)器,在中小型系統(tǒng)和并發(fā)訪問(wèn)用戶不是很多的場(chǎng)合下被普遍使用,是開(kāi)發(fā)和調(diào)試JSP程序的首選。
Tomcat和Nginx、Apache(httpd)、lighttpd等Web服務(wù)器一樣,具有處理HTML頁(yè)面的功能,另外它還是一個(gè)Servlet和JSP容器,獨(dú)立的Servlet容器是Tomcat的默認(rèn)模式。不過(guò),Tomcat處理靜態(tài)HTML的能力不如Nginx/Apache服務(wù)器。
對(duì)比php軟件,區(qū)別?
目前Tomcat最新版本為9.0。Java容器還有resin、weblogic等。
JDK下載:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html Tomcat下載:http://tomcat.apache.org/
因?yàn)閖dk和Tomcat的版本對(duì)運(yùn)維來(lái)說(shuō)沒(méi)什么區(qū)別,提供本文使用的軟件下載地址:http://pan.baidu.com/s/1IpioA
[root@tomcat ~]# cd /application/tools/
[root@tomcat tools]# rz
rz waiting to receive.
Starting zmodem transfer. Press Ctrl+C to cancel.
Transferring apache-tomcat-8.0.27.tar.gz...
100% 8914 KB 8914 KB/sec 00:00:01 0 Errors
Transferring jdk-8u60-linux-x64.tar.gz...
100% 176990 KB 14749 KB/sec 00:00:12 0 Errors
tar xf jdk-8u60-linux-x64.tar.gz -C /application/
ln -s /application/jdk1.8.0_60 /application/jdk
sed -i.ori '$a export JAVA_HOME=/application/jdk\nexport PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH\nexport CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar' /etc/profile
source /etc/profile
#→出現(xiàn)下面結(jié)果證明部署成功
[root@tomcat ~]# java -version
java version "1.8.0_60"
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)
上面有一個(gè)sed命令的特殊用法,欲知詳情→http://edu.51cto.com/course/course_id-5266.html
tar xf apache-tomcat-8.0.27.tar.gz -C /application/
ln -s /application/apache-tomcat-8.0.27 /application/tomcat
echo 'export TOMCAT_HOME=/application/tomcat'>>/etc/profile
source /etc/profile
chown -R root.root /application/jdk/ /application/tomcat/
[root@tomcat ~]# tail -4 /etc/profile
export JAVA_HOME=/application/jdk
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
export TOMCAT_HOME=/application/tomcat
[root@tomcat ~]# cd /application/tomcat/
[root@tomcat tomcat]# tree -L 1
.
├── bin #→用以啟動(dòng)、關(guān)閉Tomcat或者其它功能的腳本(.bat文件和.sh文件)
├── conf #→用以配置Tomcat的XML及DTD文件
├── lib #→存放web應(yīng)用能訪問(wèn)的JAR包
├── LICENSE
├── logs #→Catalina和其它Web應(yīng)用程序的日志文件
├── NOTICE
├── RELEASE-NOTES
├── RUNNING.txt
├── temp #→臨時(shí)文件
├── webapps #→Web應(yīng)用程序根目錄
└── work #→用以產(chǎn)生有JSP編譯出的Servlet的.java和.class文件
7 directories, 4 files
[root@tomcat tomcat]# cd webapps/
[root@tomcat webapps]# ll
total 20
drwxr-xr-x 14 root root 4096 Oct 5 12:09 docs #→tomcat幫助文檔
drwxr-xr-x 6 root root 4096 Oct 5 12:09 examples #→web應(yīng)用實(shí)例
drwxr-xr-x 5 root root 4096 Oct 5 12:09 host-manager #→管理
drwxr-xr-x 5 root root 4096 Oct 5 12:09 manager #→管理
drwxr-xr-x 3 root root 4096 Oct 5 12:09 ROOT #→默認(rèn)網(wǎng)站根目錄
#→啟動(dòng)程序/application/tomcat/bin/startup.sh
#→關(guān)閉程序/application/tomcat/bin/shutdown.sh
[root@tomcat ~]# /application/tomcat/bin/startup.sh
Using CATALINA_BASE: /application/tomcat
Using CATALINA_HOME: /application/tomcat
Using CATALINA_TMPDIR: /application/tomcat/temp
Using JRE_HOME: /application/jdk
Using CLASSPATH: /application/tomcat/bin/bootstrap.jar:/application/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@tomcat ~]# netstat -tunlp|grep java
tcp 0 0 :::8009 :::* LISTEN 4743/java
tcp 0 0 :::8080 :::* LISTEN 4743/java
[root@tomcat ~]# ps -ef|grep [j]ava
root 4743 1 17 06:10 pts/0 00:00:03 /application/jdk/bin/java -Djava.util.logging.config.file=/application/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/application/tomcat/endorsed -classpath /application/tomcat/bin/bootstrap.jar:/application/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/application/tomcat -Dcatalina.home=/application/tomcat -Djava.io.tmpdir=/application/tomcat/temp org.apache.catalina.startup.Bootstrap start
網(wǎng)址:http://10.0.0.3:8080/
[root@tomcat ~]# cd /application/tomcat/logs/
[root@tomcat logs]# ls
catalina.2016-01-26.log localhost.2016-01-26.log
catalina.out localhost_access_log.2016-01-26.txt
host-manager.2016-01-26.log manager.2016-01-26.log
#→tomcat實(shí)時(shí)日志
[root@tomcat logs]# tailf catalina.out
26-Jan-2016 06:10:24.006 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /application/apache-tomcat-8.0.27/webapps/examples has finished in 666 ms
26-Jan-2016 06:10:24.007 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /application/apache-tomcat-8.0.27/webapps/docs
26-Jan-2016 06:10:24.054 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /application/apache-tomcat-8.0.27/webapps/docs has finished in 47 ms
26-Jan-2016 06:10:24.055 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /application/apache-tomcat-8.0.27/webapps/manager
26-Jan-2016 06:10:24.134 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /application/apache-tomcat-8.0.27/webapps/manager has finished in 80 ms
26-Jan-2016 06:10:24.139 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /application/apache-tomcat-8.0.27/webapps/host-manager
26-Jan-2016 06:10:24.188 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /application/apache-tomcat-8.0.27/webapps/host-manager has finished in 50 ms
26-Jan-2016 06:10:24.195 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
26-Jan-2016 06:10:24.206 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-8009"]
26-Jan-2016 06:10:24.211 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 1560 ms
[root@tomcat conf]# pwd
/application/tomcat/conf
[root@tomcat conf]# ll -h
total 216K
drwxr-xr-x 3 root root 4.0K Jan 26 06:10 Catalina
-rw------- 1 root root 13K Sep 28 16:19 catalina.policy
-rw------- 1 root root 7.0K Sep 28 16:19 catalina.properties
-rw------- 1 root root 1.6K Sep 28 16:19 context.xml
-rw------- 1 root root 3.4K Sep 28 16:19 logging.properties
-rw------- 1 root root 6.4K Sep 28 16:19 server.xml #→主配置文件
-rw------- 1 root root 1.8K Sep 28 16:19 tomcat-users.xml #→Tomcat管理用戶配置文件
-rw------- 1 root root 1.9K Sep 28 16:19 tomcat-users.xsd
-rw------- 1 root root 164K Sep 28 16:19 web.xml
測(cè)試功能,生產(chǎn)環(huán)境不要用。
Tomcat管理功能用于對(duì)Tomcat自身以及部署在Tomcat上的應(yīng)用進(jìn)行管理的web應(yīng)用。在默認(rèn)情況下是處于禁用狀態(tài)的。如果需要開(kāi)啟這個(gè)功能,就需要配置管理用戶,即配置前面說(shuō)過(guò)的tomcat-users.xml。
[root@tomcat ~]# vim /application/tomcat/conf/tomcat-users.xml
…………
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="tomcat" password="tomcat" roles="manager-gui,admin-gui"/>
</tomcat-users> #→在此行前加入上面三行
[root@tomcat ~]# /application/tomcat/bin/shutdown.sh
[root@tomcat ~]# /application/tomcat/bin/startup.sh
<server>
<service>
<connector />
<engine>
<host>
<context></context>
</host>
<host>
<context></context>
</host>
</engine>
</service>
</server>
<?xml version='1.0' encoding='utf-8'?>
<!--
<Server>元素代表整個(gè)容器,是Tomcat實(shí)例的頂層元素.由org.apache.catalina.Server接口來(lái)定義.它包含一個(gè)<Service>元素.并且它不能做為任何元素的子元素.
port指定Tomcat監(jiān)聽(tīng)shutdown命令端口.終止服務(wù)器運(yùn)行時(shí),必須在Tomcat服務(wù)器所在的機(jī)器上發(fā)出shutdown命令.該屬性是必須的.
shutdown指定終止Tomcat服務(wù)器運(yùn)行時(shí),發(fā)給Tomcat服務(wù)器的shutdown監(jiān)聽(tīng)端口的字符串.該屬性必須設(shè)置
-->
<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服務(wù)組件-->
<Service name="Catalina">
<!--
connector:接收用戶請(qǐng)求,類似于httpd的listen配置監(jiān)聽(tīng)端口.
port指定服務(wù)器端要?jiǎng)?chuàng)建的端口號(hào),并在這個(gè)端口監(jiān)聽(tīng)來(lái)自客戶端的請(qǐng)求。
address:指定連接器監(jiān)聽(tīng)的地址,默認(rèn)為所有地址(即0.0.0.0)
protocol連接器使用的協(xié)議,支持HTTP和AJP。AJP(Apache Jserv Protocol)專用于tomcat與apache建立通信的, 在httpd反向代理用戶請(qǐng)求至tomcat時(shí)使用(可見(jiàn)Nginx反向代理時(shí)不可用AJP協(xié)議)。
minProcessors服務(wù)器啟動(dòng)時(shí)創(chuàng)建的處理請(qǐng)求的線程數(shù)
maxProcessors最大可以創(chuàng)建的處理請(qǐng)求的線程數(shù)
enableLookups如果為true,則可以通過(guò)調(diào)用request.getRemoteHost()進(jìn)行DNS查詢來(lái)得到遠(yuǎn)程客戶端的實(shí)際主機(jī)名,若為false則不進(jìn)行DNS查詢,而是返回其ip地址
redirectPort指定服務(wù)器正在處理http請(qǐng)求時(shí)收到了一個(gè)SSL傳輸請(qǐng)求后重定向的端口號(hào)
acceptCount指定當(dāng)所有可以使用的處理請(qǐng)求的線程數(shù)都被使用時(shí),可以放到處理隊(duì)列中的請(qǐng)求數(shù),超過(guò)這個(gè)數(shù)的請(qǐng)求將不予處理
connectionTimeout指定超時(shí)的時(shí)間數(shù)(以毫秒為單位)
-->
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<!--engine,核心容器組件,catalina引擎,負(fù)責(zé)通過(guò)connector接收用戶請(qǐng)求,并處理請(qǐng)求,將請(qǐng)求轉(zhuǎn)至對(duì)應(yīng)的虛擬主機(jī)host
defaultHost指定缺省的處理請(qǐng)求的主機(jī)名,它至少與其中的一個(gè)host元素的name屬性值是一樣的
-->
<Engine name="Catalina" defaultHost="localhost">
<!--Realm表示存放用戶名,密碼及role的數(shù)據(jù)庫(kù)-->
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<!--
host表示一個(gè)虛擬主機(jī)
name指定主機(jī)名
appBase應(yīng)用程序基本目錄,即存放應(yīng)用程序的目錄.一般為appBase="webapps" ,相對(duì)于CATALINA_HOME而言的,也可以寫(xiě)絕對(duì)路徑。
unpackWARs如果為true,則tomcat會(huì)自動(dòng)將WAR文件解壓,否則不解壓,直接從WAR文件中運(yùn)行應(yīng)用程序
autoDeploy:在tomcat啟動(dòng)時(shí),是否自動(dòng)部署。
xmlValidation:是否啟動(dòng)xml的校驗(yàn)功能,一般xmlValidation="false"。
xmlNamespaceAware:檢測(cè)名稱空間,一般xmlNamespaceAware="false"。
-->
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<!--
Context表示一個(gè)web應(yīng)用程序,通常為WAR文件
docBase應(yīng)用程序的路徑或者是WAR文件存放的路徑,也可以使用相對(duì)路徑,起始路徑為此Context所屬Host中appBase定義的路徑。
path表示此web應(yīng)用程序的url的前綴,這樣請(qǐng)求的url為http://localhost:8080/path/****
reloadable這個(gè)屬性非常重要,如果為true,則tomcat會(huì)自動(dòng)檢測(cè)應(yīng)用程序的/WEB-INF/lib 和/WEB-INF/classes目錄的變化,自動(dòng)裝載新的應(yīng)用程序,可以在不重啟tomcat的情況下改變應(yīng)用程序
-->
<Context path="" docBase="" debug=""/>
<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>
上線的代碼有兩種方式,第一種方式是直接將程序目錄放在webapps目錄下面,這種方式大家已經(jīng)明白了,就不多說(shuō)了。第二種方式是使用開(kāi)發(fā)工具將程序打包成war包,然后上傳到webapps目錄下面。下面讓我們見(jiàn)識(shí)一下這種方式。
[root@tomcat webapps]# pwd
/application/tomcat/webapps
[root@tomcat webapps]# rz #→上傳memtest.war,此文件也在上面的百度網(wǎng)盤(pán)里
[root@tomcat webapps]# ls
docs examples host-manager manager memtest memtest.war ROOT
瀏覽器訪問(wèn):http://10.0.0.3:8080/memtest/meminfo.jsp
上面訪問(wèn)的網(wǎng)址為http://10.0.0.3:8080/memtest/meminfo.jsp 現(xiàn)在我想訪問(wèn)格式為http://10.0.0.3:8080/meminfo.jsp 怎么破?
方法一
將meminfo.jsp或其他程序放在tomcat/webapps/ROOT
目錄下即可。因?yàn)槟J(rèn)網(wǎng)站根目錄為tomcat/webapps/ROOT
方法二
[root@tomcat ~]# vim /application/tomcat/conf/server.xml
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context path="" docBase="/application/tomcat/webapps/memtest" debug="0" reloadable="false" crossContext="true"/>
[root@tomcat ~]# /application/tomcat/bin/shutdown.sh
[root@tomcat ~]# /application/tomcat/bin/startup.sh
[root@tomcat ~]# cd /application/
[root@tomcat application]# cp -a apache-tomcat-8.0.27 tomcat8_1
[root@tomcat application]# cp -a apache-tomcat-8.0.27 tomcat8_2
[root@tomcat application]# mkdir -p /data/www/www/ROOT
[root@tomcat application]# cp /application/tomcat/webapps/memtest/meminfo.jsp /data/www/www/ROOT/
[root@tomcat ~]# sed -i '22s#8005#8011#;69s#8080#8081#;123s#appBase=".*"# appBase="/data/www/www"#' /application/tomcat8_1/conf/server.xml
[root@tomcat ~]# sed -i '22s#8005#8012#;69s#8080#8082#;123s#appBase=".*"# appBase="/data/www/www"#' /application/tomcat8_2/conf/server.xml
[root@tomcat ~]# diff /application/tomcat/conf/server.xml /application/tomcat8_1/conf/server.xml
22c22
< <Server port="8005" shutdown="SHUTDOWN">
---
> <Server port="8011" shutdown="SHUTDOWN">
69c69
< <Connector port="8080" protocol="HTTP/1.1"
---
> <Connector port="8081" protocol="HTTP/1.1"
123c123
< <Host name="localhost" appBase="/application/tomcat/webapps/memtest"
---
> <Host name="localhost" appBase="/data/www/www"
[root@tomcat ~]# diff /application/tomcat/conf/server.xml /application/tomcat8_2/conf/server.xml
22c22
< <Server port="8005" shutdown="SHUTDOWN">
---
> <Server port="8012" shutdown="SHUTDOWN">
69c69
< <Connector port="8080" protocol="HTTP/1.1"
---
> <Connector port="8082" protocol="HTTP/1.1"
123c123
< <Host name="localhost" appBase="/application/tomcat/webapps/memtest"
---
> <Host name="localhost" appBase="/data/www/www"
for i in {1..2};do /application/tomcat8_$i/bin/startup.sh;done
netstat -tunlp|grep java
瀏覽器可以分別訪問(wèn)http://10.0.0.3:8081/meminfo.jsp 和 http://10.0.0.3:8082/meminfo.jsp
使用nginx+Tomcat反向代理集群
[root@tomcat ~]# vim /application/nginx/conf/nginx.conf
upstream web_pools {
server 127.0.0.1:8081;
server 127.0.0.1:8082;
}
server {
listen 80;
server_name localhost;
location / {
root html;
index index.jsp index.html index.htm;
proxy_pass http://web_pools;
}
}
[root@tomcat ~]# /application/nginx/sbin/nginx -t
[root@tomcat ~]# /application/nginx/sbin/nginx
瀏覽器可以訪問(wèn)http://10.0.0.3/meminfo.jsp
企業(yè)案例:Linux下java/http進(jìn)程高解決案例
生產(chǎn)環(huán)境下某臺(tái)tomcat7服務(wù)器,在剛發(fā)布時(shí)的時(shí)候一切都很正常,在運(yùn)行一段時(shí)間后就出現(xiàn)CPU占用很高的問(wèn)題,基本上是負(fù)載一天比一天高。請(qǐng)搞定!
enableLookups="false"
<Connector port="8081" protocol="HTTP/1.1"
connectionTimeout="6000" enableLookups="false" acceptCount="800"
redirectPort="8443" />
Tomcat最吃內(nèi)存,只要內(nèi)存足夠,這只貓就跑的很快。
如果系統(tǒng)資源有限,那就需要進(jìn)行調(diào)優(yōu),提高資源使用率。
優(yōu)化catalina.sh配置文件。在catalina.sh配置文件中添加以下代碼:
JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms1024m -Xmx1024m -XX:NewSize=512m -XX:MaxNewSize=512m -XX:PermSize=512m -XX:MaxPermSize=512m"
server:一定要作為第一個(gè)參數(shù),在多個(gè)CPU時(shí)性能佳
-Xms:初始堆內(nèi)存Heap大小,使用的最小內(nèi)存,cpu性能高時(shí)此值應(yīng)設(shè)的大一些
-Xmx:初始堆內(nèi)存heap最大值,使用的最大內(nèi)存
上面兩個(gè)值是分配JVM的最小和最大內(nèi)存,取決于硬件物理內(nèi)存的大小,建議均設(shè)為物理內(nèi)存的一半。
-XX:PermSize:設(shè)定內(nèi)存的永久保存區(qū)域
-XX:MaxPermSize:設(shè)定最大內(nèi)存的永久保存區(qū)域
-XX:MaxNewSize:
-Xss 15120 這使得JBoss每增加一個(gè)線程(thread)就會(huì)立即消耗15M內(nèi)存,而最佳值應(yīng)該是128K,默認(rèn)值好像是512k.
+XX:AggressiveHeap 會(huì)使得 Xms沒(méi)有意義。這個(gè)參數(shù)讓jvm忽略Xmx參數(shù),瘋狂地吃完一個(gè)G物理內(nèi)存,再吃盡一個(gè)G的swap。
-Xss:每個(gè)線程的Stack大小
-verbose:gc 現(xiàn)實(shí)垃圾收集信息
-Xloggc:gc.log 指定垃圾收集日志文件
-Xmn:young generation的heap大小,一般設(shè)置為Xmx的3、4分之一
-XX:+UseParNewGC :縮短minor收集的時(shí)間
*請(qǐng)認(rèn)真填寫(xiě)需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。