新聞中心
Tomcat背景
自從JSP發(fā)布之后,推出了各式各樣的JSP引擎。Apache Group在完成GNUJSP1.0的開發(fā)以后,開始考慮在SUN的JSWDK基礎(chǔ)上開發(fā)一個可以直接提供Web服務的JSP服務器,當然同時也支持Servlet, 這樣Tomcat就誕生了。Tomcat是jakarta項目中的一個重要的子項目,其被JavaWorld雜志的編輯選為2001年度最具創(chuàng)新的Java產(chǎn)品,同時它又是sun公司官方推薦的servlet和jsp容器,因此其越來越多的受到軟件公司和開發(fā)人員的喜愛。servlet和jsp的最新規(guī)范都可以在tomcat的新版本中得到實現(xiàn)。其次,Tomcat是完全免費開源的軟件,任何人都可以從互聯(lián)網(wǎng)上自由地下載。Tomcat與Apache的組合相當完美。
湯姆貓
本章知識鏈路
Tomcat被譽為最好的web服務器,基本上每一位開發(fā)人員(JAVA)都會使用,因此本章從以下幾個方面來講解,若文中有誤的地方大伙可以留言討論,一起研究研究。
- Tomcat之JVM內(nèi)存查看;
- Tomcat之啟動優(yōu)化;
- Tomcat之并發(fā)優(yōu)化;
- Tomcat之內(nèi)存優(yōu)化;
- apache的ab壓力測試;
- Tomcat之BIO/NIO/APR的三大模式(略)。
tomcat思路
Tomcat之JVM內(nèi)存查看
此處我以tomcat6和tomcat7來進行講解,tomcat7+ 配置、操作方法類似。
- Tomcat6的User配置:
Tomcat6配置
- Tomcat7的User配置:
Tomcat7配置
- 上述設置完成后:
本地訪問 /localhost:8080/manager/status
未優(yōu)化前信息
Tomcat之啟動優(yōu)化
- Linux中修改catalina.sh文件,windows中修改catalina.bat文件;內(nèi)容如下:
export JAVA_OPTS="
-server
-Xms1600M
-Xmx1600M
-Xss512k
-XX:+AggressiveOpts
-XX:+UseBiasedLocking
-XX:PermSize=128M
-XX:MaxPermSize=256M
-XX:+DisableExplicitGC
-XX:MaxTenuringThreshold=31
-XX:+UseConcMarkSweepGC
-XX:+UseParNewGC
-XX:+CMSParallelRemarkEnabled
-XX:+UseCMSCompactAtFullCollection
-XX:LargePageSizeInBytes=128m
-XX:+UseFastAccessorMethods
-XX:+UseCMSInitiatingOccupancyOnly
-Djava.awt.headless=true"
- 檢查是否生效
Tomcat之并發(fā)優(yōu)化
- 修改位置:
/opt/tomcat7/conf下的server.xml文件中
節(jié)點的配置優(yōu)化,一定先備份。
- 標準版優(yōu)化:
protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="600"
minSpareThreads="100"
maxSpareThreads="500"
acceptCount="700"
connectionTimeout="20000"
redirectPort="8443" />
- 復雜版優(yōu)化:
protocol="HTTP/1.1"
URIEncoding="UTF-8"
minSpareThreads="25"
maxSpareThreads="75"
enableLookups="false"
disableUploadTimeout="true"
connectionTimeout="20000"
acceptCount="300"
maxThreads="300"
maxProcessors="1000"
minProcessors="5"
useURIValidationHack="false"
compression="on"
compressionMinSize="2048"
compressableMimeType="text/html,text/xml,text/JavaScript,text/css,text/plain"
redirectPort="8443"/>
Tomcat之內(nèi)存優(yōu)化
錯誤排查:成都服務器托管
查看%TOMCAT_HOME%\logs文件夾下,日志文件是否有內(nèi)存溢出錯誤
錯誤提示一:java.lang.OutOfMemoryError: Java heap space
- 產(chǎn)生原因:
Tomcat默認可以使用的內(nèi)存為128MB,在較大型的應用項目中,這點內(nèi)存是不夠的,有可能導致系統(tǒng)無法運行。
常見的問題是報Tomcat內(nèi)存溢出錯誤,Out of Memory(系統(tǒng)內(nèi)存不足)的異常,從而導致客戶端顯示500錯誤,
一般調(diào)整Tomcat的使用內(nèi)存即可解決此問題。
- 解決辦法:
Windows環(huán)境下修改:成都服務器托管
“%TOMCAT_HOME%\bin\ catalina.bat ”文件,在文件開頭增加如下設置:成都服務器托管
JAVA_OPTS=-Xms2048m -Xmx2048m
Linux環(huán)境下修改:成都服務器托管
“%TOMCAT_HOME%\bin\ catalina.sh ”文件,在文件開頭增加如下設置:成都服務器托管
JAVA_OPTS=-Xms2048m -Xmx2048m
錯誤提示二:java.lang.OutOfMemoryError: PermGen space
- 產(chǎn)生原因
PermGen space的全稱是Permanent Generation space,是指內(nèi)存的永久保存區(qū)域,這塊內(nèi)存主要是被JVM存放Class和Meta信息的,Class在被Loader時就會被放到PermGen space中,它和存放類實例(Instance)的Heap區(qū)域不同,GC(Garbage Collection)不會在主程序運行期對PermGen space進行清理,所以如果你的應用中有很CLASS的話,就很可能出現(xiàn)PermGen space錯誤,這種錯誤常見在web服務器對JSP進行pre-compile的時候。如果你的WEB APP下都用了大量的第三方jar, 其大小超過了jvm默認的大小(4M)那么就會產(chǎn)生此錯誤信息了 。
- 解決辦法:
Windows環(huán)境下修改:成都服務器托管
“%TOMCAT_HOME%\bin\ catalina.bat ”文件,在文件開頭增加如下設置:成都服務器托管
set JAVA_OPTS=-Xms64m -Xmx256m -XX:PermSize=128M -XX:MaxNewSize=256m - XX:MaxPermSize=256m
Linux環(huán)境下修改:成都服務器托管
“%TOMCAT_HOME%\bin\ catalina.sh ”文件,在文件開頭增加如下設置:成都服務器托管
export JAVA_OPTS=-Xms64m -Xmx256m -XX:PermSize=128M -XX:MaxNewSize=256m XX:MaxPermSize=256m
windows中修改位置:成都服務器托管
Apache的ab壓力測試
- 下載httpd-2.2.29.tar.gz包
- /opt下面解壓:httpd-2.2.29.tar.gz
- 根目錄/下:
mkdir -p /usr/local/web/apache
- /opt下進入httpd-2.2.29文件夾:cd httpd-2.2.29
- 安裝
./configure --prefix=/usr/local/web/apache --enable-shared=max --enable-module=rewirte --enable-module=so
make
make install
ab壓力測試開始:成都服務器托管
- 進入/usr/local/web/apache/bin目錄下,執(zhí)行以下命令:
ab -n1000 -c100 /localhost:8080/
- 報告說明
附注
因時間有限,文章中細節(jié)應用未在此體現(xiàn),大家閱讀時若有疑問可以隨時留言討論。小編在這里致敬每一位技術(shù)人,大家辛苦啦!成都小程序開發(fā)公司!成都小程序開發(fā)公司!成都小程序開發(fā)公司!成都小程序開發(fā)公司
本文題目:Web服務器(Tomcat)高級優(yōu)化
新聞來源:http://www.ef60e0e.cn/article/sghjs.html