Tomcat 8 安裝和配置、優化

Tomcat 8 安裝javascript

Tomcat 8 安裝 官網:http://tomcat.apache.org/ Tomcat 8 官網下載:http://tomcat.apache.org/download-80.cgi 此時(20160207) Tomcat 8 最新版本爲:apache-tomcat-8.0.32.tar.gz 我我的習慣 /opt 目錄下建立一個目錄 setups 用來存放各類軟件安裝包;在 /usr 目錄下建立一個 program 用來存放各類解壓後的軟件包,下面的講解也都是基於此習慣 我我的已經使用了第三方源:EPEL、RepoForge,若是你出現 yum install XXXXX 安裝不成功的話,頗有可能就是你沒有相關源,請查看我對源設置的文章 Tomcat 8 下載:wget http://apache.fayea.com/tomcat/tomcat-8/v8.0.32/bin/apache-tomcat-8.0.32.tar.gz 壓縮包解壓:tar -zxvf apache-tomcat-8.0.32.tar.gz 移到解壓出來文件夾到 /usr 下:mv apache-tomcat-8.0.32/ /usr/program/ 爲了方便,修改解壓目錄的名字:mv /usr/program/apache-tomcat-8.0.32/ /usr/program/tomcat8/ 設置 Iptables 規則(這一步是必須設置的): 一種方式:先關閉 iptables,防止出現攔截問題而測試不了:service iptables stop 一種方式:在 iptables 中添加容許規則(Tomcat 默認端口是 8080): 添加規則:iptables -I INPUT -p tcp -m tcp --dport 8080 -j ACCEPT 保存規則:service iptables save 重啓 iptables:service iptables restart 測試安裝好後的 Tomcat: 啓動 Tomcat:sh /usr/program/tomcat8/bin/startup.sh ; tail -200f /usr/program/tomcat8/logs/catalina.out 訪問:http://服務器 IP 地址:8080/ 中止 Tomcat:sh /usr/program/tomcat8/bin/shutdown.sh 若是啓動報:java.net.UnknownHostException 或 localhost. This prevents creation of a GUID 解決辦法: 修改配置文件:vim /etc/sysconfig/network,把裏面的 HOSTNAME 改成你本身設置的一個名字,好比我這邊改成:youmeek 修改配置文件:vim /etc/hosts,把第一行的 127.0.0.1 這一行刪掉,而後再最後一行增長這句:127.0.0.1 localhost youmeek,這裏最後的 youmeek 就是主機名 而後重啓計算機:reboot 若是啓動報:java.net.BindException: 地址已在使用 / java.net.BindException: Address already in use 解決辦法:這表示端口被佔用,修改 Tomcat 的 server.xml 配置文件,把端口改了便可。 Tomcat 8 配置css

設置 Tomcat 相關變量: vim /usr/program/tomcat8/bin/catalina.sh 在配置文件的可編輯內容最上面(98 行開始),加上以下內容(具體參數根據你服務器狀況自行修改): JAVA_HOME=/usr/program/jdk1.8.0_72 CATALINA_HOME=/usr/program/tomcat8 CATALINA_OPTS="-Dfile.encoding=UTF-8 -server -Xms2048m -Xmx2048m -Xmn1024m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:SurvivorRatio=10 -XX:MaxTenuringThreshold=15 -XX:NewRatio=2 -XX:+DisableExplicitGC" CATALINA_PID=$CATALINA_HOME/catalina.pid 若是使用 shutdown.sh 還沒法中止 tomcat,能夠修改其配置:vim /usr/program/tomcat8/bin/shutdown.sh 把最尾巴這一行:exec "$PRGDIR"/"$EXECUTABLE" stop "$@" 改成:exec "$PRGDIR"/"$EXECUTABLE" stop 10 -force Tomcat 8 優化html

Tomcat 6/7/8 的優化參數有點不同,最好按下面的方式看一下官網這個文檔是否還保留着這個參數 啓動tomcat,訪問該地址,下面要講解的一些配置信息,在該文檔下都有說明的: 文檔:http://127.0.0.1:8080/docs/config 你也能夠直接看網絡版本: Tomcat 6 文檔:https://tomcat.apache.org/tomcat-6.0-doc/config Tomcat 7 文檔:https://tomcat.apache.org/tomcat-7.0-doc/config/ Tomcat 8 文檔:https://tomcat.apache.org/tomcat-8.0-doc/config/ 若是你須要查看 Tomcat 的運行狀態能夠配置tomcat管理員帳戶,而後登錄 Tomcat 後臺進行查看 編輯 /opt/tomcat7/bin/conf/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"/> 編輯配置文件:vim /usr/program/tomcat7/conf/server.xml 打開默認被註釋的鏈接池配置: 默認值:java

<!-- <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="150" minSpareThreads="4"/> -->apache

修改成: <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="500" minSpareThreads="30" maxIdleTime="60000" prestartminSpareThreads = "true" maxQueueSize = "100" /> 重點參數解釋: maxThreads,最大併發數,默認設置 200,通常建議在 500 ~ 800,根據硬件設施和業務來判斷 minSpareThreads,Tomcat 初始化時建立的線程數,默認設置 25 prestartminSpareThreads,在 Tomcat 初始化的時候就初始化 minSpareThreads 的參數值,若是不等於 true,minSpareThreads 的值就沒啥效果了 maxQueueSize,最大的等待隊列數,超過則拒絕請求 maxIdleTime,若是當前線程大於初始化線程,那空閒線程存活的時間,單位毫秒,默認60000=60秒=1分鐘。 修改默認的連接參數配置: 默認值: <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> 修改成: <Connector executor="tomcatThreadPool" port="8080" protocol="org.apache.coyote.http11.Http11Nio2Protocol" connectionTimeout="20000" maxConnections="10000" redirectPort="8443" enableLookups="false" acceptCount="100" maxPostSize="10485760" maxHttpHeaderSize="8192" compression="on" disableUploadTimeout="true" compressionMinSize="2048" acceptorThreadCount="2" compressableMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/javascript" URIEncoding="utf-8" /> 重點參數解釋: protocol,Tomcat 8 設置 nio2 更好:org.apache.coyote.http11.Http11Nio2Protocol(若是這個用不了,就用下面那個) protocol,Tomcat 六、7 設置 nio 更好:org.apache.coyote.http11.Http11NioProtocol enableLookups,禁用DNS查詢 acceptCount,指定當全部可使用的處理請求的線程數都被使用時,能夠放處處理隊列中的請求數,超過這個數的請求將不予處理,默認設置 100 maxPostSize,以 FORM URL 參數方式的 POST 提交方式,限制提交最大的大小,默認是 2097152(2兆),它使用的單位是字節。10485760 爲 10M。若是要禁用限制,則能夠設置爲 -1。 acceptorThreadCount,用於接收鏈接的線程的數量,默認值是1。通常這個指須要改動的時候是由於該服務器是一個多核CPU,若是是多核 CPU 通常配置爲 2. maxHttpHeaderSize,http請求頭信息的最大程度,超過此長度的部分不予處理。通常8K。 禁用 AJP(若是你服務器沒有使用 Apache) 把下面這一行註釋掉,默認 Tomcat 是開啓的。vim

<!-- <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> -->緩存

JVM 優化tomcat

模型資料來源:http://xmuzyq.iteye.com/blog/599750 配比資料:http://www.jianshu.com/p/d45e12241af4 Java 的內存模型分爲: Young,年輕代(易被 GC)。Young 區被劃分爲三部分,Eden 區和兩個大小嚴格相同的 Survivor 區,其中 Survivor 區間中,某一時刻只有其中一個是被使用的,另一個留作垃圾收集時複製對象用,在 Young 區間變滿的時候,minor GC 就會將存活的對象移到空閒的Survivor 區間中,根據 JVM 的策略,在通過幾回垃圾收集後,任然存活於 Survivor 的對象將被移動到 Tenured 區間。 Tenured,終身代。Tenured 區主要保存生命週期長的對象,通常是一些老的對象,當一些對象在 Young 複製轉移必定的次數之後,對象就會被轉移到 Tenured 區,通常若是系統中用了 application 級別的緩存,緩存中的對象每每會被轉移到這一區間。 Perm,永久代。主要保存 class,method,filed 對象,這部門的空間通常不會溢出,除非一次性加載了不少的類,不過在涉及到熱部署的應用服務器的時候,有時候會遇到 java.lang.OutOfMemoryError : PermGen space 的錯誤,形成這個錯誤的很大緣由就有多是每次都從新部署,可是從新部署後,類的 class 沒有被卸載掉,這樣就形成了大量的 class 對象保存在了 perm 中,這種狀況下,通常從新啓動應用服務器能夠解決問題。 Linux 修改 /usr/program/tomcat7/bin/catalina.sh 文件,把下面信息添加到文件第一行。 若是服務器只運行一個 Tomcat 機子內存若是是 4G: CATALINA_OPTS="-Dfile.encoding=UTF-8 -server -Xms2048m -Xmx2048m -Xmn1024m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:SurvivorRatio=10 -XX:MaxTenuringThreshold=15 -XX:NewRatio=2 -XX:+DisableExplicitGC" 機子內存若是是 8G: CATALINA_OPTS="-Dfile.encoding=UTF-8 -server -Xms4096m -Xmx4096m -Xmn2048m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:SurvivorRatio=10 -XX:MaxTenuringThreshold=15 -XX:NewRatio=2 -XX:+DisableExplicitGC" 機子內存若是是 16G: CATALINA_OPTS="-Dfile.encoding=UTF-8 -server -Xms8192m -Xmx8192m -Xmn4096m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:SurvivorRatio=10 -XX:MaxTenuringThreshold=15 -XX:NewRatio=2 -XX:+DisableExplicitGC" 機子內存若是是 32G: CATALINA_OPTS="-Dfile.encoding=UTF-8 -server -Xms16384m -Xmx16384m -Xmn8192m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:SurvivorRatio=10 -XX:MaxTenuringThreshold=15 -XX:NewRatio=2 -XX:+DisableExplicitGC" 若是是 8G 開發機 -Xms2048m -Xmx2048m -XX:NewSize=512m -XX:MaxNewSize=1024m -XX:PermSize=256m -XX:MaxPermSize=512m 若是是 16G 開發機 -Xms4096m -Xmx4096m -XX:NewSize=1024m -XX:MaxNewSize=2048m -XX:PermSize=256m -XX:MaxPermSize=512m 參數說明: -Dfile.encoding:默認文件編碼 -server:表示這是應用於服務器的配置,JVM 內部會有特殊處理的 -Xmx1024m:設置JVM最大可用內存爲1024MB -Xms1024m:設置JVM最小內存爲1024m。此值能夠設置與-Xmx相同,以免每次垃圾回收完成後JVM從新分配內存。 -Xmn1024m:設置JVM新生代大小(JDK1.4以後版本)。通常-Xmn的大小是-Xms的1/2左右,不要設置的過大或太小,過大致使老年代變小,頻繁Full GC,太小致使minor GC頻繁。若是不設置-Xmn,能夠採用-XX:NewRatio=2來設置,也是同樣的效果 -XX:NewSize:設置新生代大小 -XX:MaxNewSize:設置最大的新生代大小 -XX:PermSize:設置永久代大小 -XX:MaxPermSize:設置最大永久代大小 -XX:NewRatio=4:設置年輕代(包括 Eden 和兩個 Survivor 區)與終身代的比值(除去永久代)。設置爲 4,則年輕代與終身代所佔比值爲 1:4,年輕代佔整個堆棧的 1/5 -XX:MaxTenuringThreshold=10:設置垃圾最大年齡,默認爲:15。若是設置爲 0 的話,則年輕代對象不通過 Survivor 區,直接進入年老代。對於年老代比較多的應用,能夠提升效率。若是將此值設置爲一個較大值,則年輕代對象會在 Survivor 區進行屢次複製,這樣能夠增長對象再年輕代的存活時間,增長在年輕代即被回收的概論。須要注意的是,設置了 -XX:MaxTenuringThreshold,並不表明着,對象必定在年輕代存活15次才被晉升進入老年代,它只是一個最大值,事實上,存在一個動態計算機制,計算每次晉入老年代的閾值,取閾值和MaxTenuringThreshold中較小的一個爲準。 -XX:+DisableExplicitGC:這個將會忽略手動調用 GC 的代碼使得 System.gc() 的調用就會變成一個空調用,徹底不會觸發任何 GC Windows 修改 /tomcat7/bin/catalina.bat 文件,找到這一行:echo Using CATALINA_BASE: "%CATALINA_BASE%",而後在其上面添加以下內容,此方法只對解壓版的 Tomcat 有效果,對於安裝版本的須要點擊安裝後任務欄上的那個 Tomcat 圖標,打開配置中有一個 Java Tab 的進行編輯。 set JAVA_OPTS=%JAVA_OPTS% -Dfile.encoding="UTF-8" -Dsun.jnu.encoding="UTF8" -Ddefault.client.encoding="UTF-8" -Duser.language=Zh set JAVA_OPTS=%JAVA_OPTS% -server -Xms4096m -Xmx4096m -Xmn2048m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:SurvivorRatio=10 -XX:MaxTenuringThreshold=15 -XX:NewRatio=2 -XX:+DisableExplicitGC Tomcat 8 的 Log 分割服務器

修改前提:本人爲 Tomcat8.5,安裝目錄爲:/usr/program/tomcat8 網絡上的官網地址如今打不開:http://cronolog.org/download/index.html 阿里雲的 CentOS 有 epel 源因此能夠直接下載:yum install cronolog,此時:2017-02,最新版本爲:1.6.2-10.el6 安裝完後,查看下安裝後的目錄位置:which cronolog,我這邊獲得的結果是:/usr/sbin/cronolog,記下這個結果,後面有用到。 修改 catalina.sh 中的內容:vim /usr/program/tomcat8/bin/catalina.sh 找到這段代碼(預計在 416 行先後): shift touch "$CATALINA_OUT" if [ "$1" = "-security" ] ; then if [ $have_tty -eq 1 ]; then echo "Using Security Manager" fi shift eval $_NOHUP ""$_RUNJAVA"" ""$LOGGING_CONFIG"" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS
-classpath ""$CLASSPATH""
-Djava.security.manager
-Djava.security.policy==""$CATALINA_BASE/conf/catalina.policy""
-Dcatalina.base=""$CATALINA_BASE""
-Dcatalina.home=""$CATALINA_HOME""
-Djava.io.tmpdir=""$CATALINA_TMPDIR""
org.apache.catalina.startup.Bootstrap "$@" start \網絡

"$CATALINA_OUT" 2>&1 "&"

else eval $_NOHUP ""$_RUNJAVA"" ""$LOGGING_CONFIG"" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS
-classpath ""$CLASSPATH""
-Dcatalina.base=""$CATALINA_BASE""
-Dcatalina.home=""$CATALINA_HOME""
-Djava.io.tmpdir=""$CATALINA_TMPDIR""
org.apache.catalina.startup.Bootstrap "$@" start \

"$CATALINA_OUT" 2>&1 "&"

fi 將上面代碼改成以下,其中請注意這個關鍵字:/usr/sbin/cronolog,這個是我上面提到的安裝路徑,你若是跟我不同,須要本身修改該相關。 shift

touch "$CATALINA_OUT"

if [ "$1" = "-security" ] ; then if [ $have_tty -eq 1 ]; then echo "Using Security Manager" fi shift eval $_NOHUP ""$_RUNJAVA"" ""$LOGGING_CONFIG"" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS
-classpath ""$CLASSPATH""
-Djava.security.manager
-Djava.security.policy==""$CATALINA_BASE/conf/catalina.policy""
-Dcatalina.base=""$CATALINA_BASE""
-Dcatalina.home=""$CATALINA_HOME""
-Djava.io.tmpdir=""$CATALINA_TMPDIR""
org.apache.catalina.startup.Bootstrap "$@" start 2>&1 | /usr/sbin/cronolog "$CATALINA_BASE"/logs/catalina.%Y-%m-%d.out >> /dev/null &

else eval $_NOHUP ""$_RUNJAVA"" ""$LOGGING_CONFIG"" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS
-classpath ""$CLASSPATH""
-Dcatalina.base=""$CATALINA_BASE""
-Dcatalina.home=""$CATALINA_HOME""
-Djava.io.tmpdir=""$CATALINA_TMPDIR""
org.apache.catalina.startup.Bootstrap "$@" start 2>&1 | /usr/sbin/cronolog "$CATALINA_BASE"/logs/catalina.%Y-%m-%d.out >> /dev/null &

fi 靜止外網經過 8080 端口訪問 Tomcat

添加 iptables 規則: iptables -t filter -A INPUT -p tcp -m tcp --dport 8080 -s localhost -j ACCEPT iptables -t filter -A INPUT -p tcp -m tcp --dport 8080 -j REJECT service iptables save service iptables restart 其餘

Tomcat 歷史版本下載地址整理(不間斷更新): Tomcat 9.0.0.M4:wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-9/v9.0.0.M4/bin/apache-tomcat-9.0.0.M4.tar.gz Tomcat 8.0.32:wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.0.32/bin/apache-tomcat-8.0.32.tar.gz Tomcat 7.0.68:wget http://apache.fayea.com/tomcat/tomcat-7/v7.0.68/bin/apache-tomcat-7.0.68.tar.gz Tomcat 6.0.45:wget http://mirrors.cnnic.cn/apache/tomcat/tomcat-6/v6.0.45/bin/apache-tomcat-6.0.45.tar.gz 資料

http://www.jikexueyuan.com/course/2064_3.html?ss=1 http://www.wellho.net/mouth/2163_CATALINA-OPTS-v-JAVA-OPTS-What-is-the-difference-.html http://blog.csdn.net/sunlovefly2012/article/details/47395165 http://blog.csdn.net/lifetragedy/article/details/7708724 http://ihuangweiwei.iteye.com/blog/1233941 http://www.cnblogs.com/ggjucheng/archive/2013/04/16/3024731.html https://tomcat.apache.org/tomcat-8.0-doc/config/http.html#Connector_Comparison http://www.apelearn.com/study_v2/chapter23.html http://blog.csdn.net/hanzheng260561728/article/details/51236131 http://blog.csdn.net/attagain/article/details/38639007

相關文章
相關標籤/搜索