1. 程式人生 > >Tomcat安裝與優化

Tomcat安裝與優化

永不 高效率 isa 上線 PE 內存頁 允許 老年代 sed

Tomcat安裝與優化

1.安裝jdk環境

最新的JDK下載地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 沒賬號註冊一個,很快的

前版本的JDK下載地址:http://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase8-2177648.html

這裏選擇Linux64位後綴tar.gz的復制下載鏈接,在linux服務上wget 下載鏈接 ,在服務器上解壓,配置環境變量vim /etc/profile寫在最後面

技術分享圖片

#/data/java目錄是我創建的,把jdk包解壓到裏面,這個寫解壓位置的絕對路徑

JAVA_HOME=/data/java/jdk的目錄名字  
CLASSPATH=$JAVA_HOME/lib/
#謹慎,這裏PATH寫錯了會發現命令都得打絕對路徑才能用,悲催
PATH=$JAVA_HOME/bin:$PATH
export PATH JAVA_HOME CLASSPATH

配置沒問題完成保存,source /etc/profile讓配置的環境變量生效,這時候可以打命令java -version看看版本,是不是出java version "1.8.0_***",如果是1.6什麽的說明沒生效,看看解壓的路徑。

技術分享圖片

技術分享圖片

2.安裝tomcat

tomcat下載地址:http://mirrors.hust.edu.cn/apache/tomcat 選擇tomcat進行下載,我下載的是apache-tomcat-8.5.31.tar.gz

解壓後改個名字列如mv apache-tomcat-8.5.31/ test_tocmat

(1)啟動測試(測不測都行23333??)

啟動前需要更改端口為可用端口,或者要使用的端口,進入到test_tomcat的conf目錄vim server.xml更改

#<Server port="8005" shutdown="SHUTDOWN
"> 第一個tomcat可以不改,為了方便後續的tomcat,統一進行修改,改為下面的,修改的端口別超過65535,不能已經占用的端口 <Server port="18005" shutdown="SHUTDOWN"> #<Connector port="8080" protocol="HTTP/1.1" 這個8080是訪問的地址,改成什麽就訪問什麽地址 # connectionTimeout="20000" # redirectPort="8443" /> <Connector port="12008" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="18443" /> #<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> <Connector port="18009" protocol="AJP/1.3" redirectPort="18443" /> #暫時改這麽多

進入到test_tomcat的bin目錄,./catalina.sh start 啟動tocmat,主要是為了測試能不能訪問到,防火墻或者selinux有沒有允許訪問,這個頁面有很多當前版本的配置

技術分享圖片

在test_tomcat目錄下的bin下./catalina.sh stop 停止tocmat

(2)tomcat優化

vim /data/test_tomcat/bin/catalina.sh #在沒有註釋的那一行上面加入一行

技術分享圖片

JAVA_OPTS="-Dfile.encoding=UTF-8 -server -Djava.awt.headless=true -Xms4096m -Xmx4096m -Xmn640M -XX:NewSize=1024m -XX:MaxNewSize=2048m -XX:MaxTenuringThreshold=15 -XX:NewRatio=2 -XX:+AggressiveOpts -XX:+UseBiasedLocking -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:+DisableExplicitGC"

-Dfile.encoding=UTF-8:強行設置系統文件編碼格式為utf-8;

-server:啟用 JDK的 server 版本;

-Djava.awt.headless=true:告訴程序沒有顯示設備鍵盤和鼠標,但又需要使用他們提供的功能,處理圖形時常用,列如用戶每次登陸系統是都要生成一張驗證碼圖片時;

-Xms:Java虛擬機初始化時堆的最小內存,此值可以設置與-Xmx相同,以避免每次垃圾回收完成後JVM重新分配內存。

-Xmx:Java虛擬機可使用堆的最大內存,設置為了物理內存的1/4(線上服務器16G內存,註意調整);

-Xmn:年輕代大小;

-XX:NewSize=n:設置新生代的最大值,一般堆區會分為3個區域,新生代、中生代和老年代。我們在程序中通過new關鍵字新建出來的對象,一般都會分配在新生代中。當新生代滿了後,JVM會通過GC來進行一次小規模的垃圾回收,此時新生代中存活的對象會被移動至中生代;

-XX:MaxTenuringThreshold=n:垃圾最大年齡,默認15,如果設置為0的話,則年輕代對象不經過Survivor區,直接進入年老代. 對於年老代比較多的應用,可以提高效率.如果將此值設置為一個較大值,則年輕代對象會在Survivor區進行多次復制,這樣可以增加對象再年輕代的存活 時間,增加在年輕代即被回收的概率該參數只有在串行GC時才有效;

-XX:NewRatio=n:設置年輕代和年老代的比值。如:為2,表示年輕代與年老代比值為1:2,年輕代占整個年輕代年老代和的1/3;

-XX:+AggressiveOpts:加快編譯;

-XX:+UseBiasedLocking:鎖機制的性能改善;

-XX:+UseConcMarkSweepGC:設置年老代並發收集器,目標是盡量減少應用的暫停時間,減少full gc發生的幾率,利用和應用程序線程並發的垃圾回收線程來標記清除年老代。這個參數表示對於老年代的回收采用CMS。CMS采用的基礎算法是:標記—清除;

-XX:+UseParNewGC:設置年輕代為並行收集。可與CMS收集同時使用。JDK5.0以上,JVM會根據系統配置自行設置,所以無需再設置此值;

-XX:+CMSParallelRemarkEnabled:降低標記停頓;

-XX:LargePageSizeInBytes=128m: 內存頁的大小不可設置過大, 會影響Perm的大小;

-XX:+UseFastAccessorMethods:原始類型的快速優化;

-XX:+UseCMSInitiatingOccupancyOnly:使用手動定義初始化定義開始CMS收集;

-XX:+DisableExplicitGC:關閉System.gc()

vim /data/test_tomcat/conf/server.xml

#<Connector port="12008" protocol="HTTP/1.1"
#                  connectionTimeout="20000"
#                   redirectPort="18443" />
    <Connector port="12008" protocol="HTTP/1.1"
               connectionTimeout="20000"
               maxThreads="500"
               minSpareThreads="50"
               maxSpareThreads="300"
               maxHttpHeaderSize="8192"
               acceptCount="500"
               redirectPort="18443"
               maxPostSize="62914560" />

connectionTimeout:網絡連接超時,假設設置為0表示永不超時

maxThreads:最大線程數,大並發請求時,tomcat能創建來處理請求的最大線程數,超過則放入請求隊列中進行排隊,默認值為200;
acceptCount:當最大線程數(maxThreads)被使用完時,可以放入請求隊列排隊個數,超過這個數返回connection refused(請求被拒絕),一般設置和maxThreads一樣,不過具體需要根據自己的應用實際訪問峰值和平均值來權衡,默認值為100;

minSpareThreads:最小空閑線程數,任何情況都會存活的線程數,即便超過了最大空閑時間,也不會被回收,默認值4;
maxSpareThreads:最大空閑線程數,在最大空閑時間(maxIdleTime)內活躍過,此時空閑,當空閑時間大於maxIdleTime則被回收,小則繼續存活,等待被調度,默認值50;

maxHttpHeaderSize:http請求頭信息的最大程度,超過此長度的部分不予處理;

redirectPort:redirectPort指定服務器正在處理http請求時,收到了一個SSL傳輸請求後,重定向的端口號;

maxPostSize:最大post大小

3.項目上線

#刪除tomcat中webapps下所有文件,謹慎別刪根
rm -rf /data/test_tocmat/webapps/*
#進入webapps
cd /data/test_tocmat/webapps/
#新建ROOT目錄,或者將項目war包改為ROOT.war後啟動tomcat會自動將war包解壓為ROOT目錄
mkdir ROOT  或者 mv XX.war ROOT.war
#測試自己寫一個ROOT裏的index.html
echo "<h1>Hello World!!</h1>" >> ROOT/index.html

技術分享圖片

項目已經啟動,在test_tomcat目錄下tail -f logs/catalina.out查看日誌,ctrl+c退出

技術分享圖片

Tomcat安裝與優化