日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Tomcat介绍及性能优化

發布時間:2025/7/14 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Tomcat介绍及性能优化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、Tomcat簡單介紹:

Sun公司創建了第一個Servlet容器,即Java Web Server,但JWS只是為了演示Servlet的相應功能,所以其性能很不穩定。與此同時,apache基金會組織(ASF)創建了JServ項目,一個能夠與apache整合起來的servlet容器。1999年,Sun公司把JWS捐給了ASF,于是兩個項目合二為一,即今天Tomcat的前身。第一個tomcat版本是Tomcat 3.x系列,而發布于2001年Tomcat4.0則是在此前基礎上進行了重新設計和實現,其代碼項目被命名為Catalina。

Tomcat服務器是一個免費的開放源代碼的Web應用服務器,屬于輕量級應用服務器,在中小型系統和并發訪問用戶不是很多的場合下被普遍使用,是開發和調試JSP程序的首選。

版本介紹:現在版本更新到 Apache Tomcat 8.x,但是Apache Tomcat 7.x是目前開發的焦點。Apache Tomcat 7.x它在汲取了Tomcat 6.0.x優點的基礎上,實現了對于Servlet 3.0、JSP 2.2和EL 2.2等特性的支持。

除此以外的改進列表如下:

· Web應用內存溢出偵測和預防

· 增強了管理程序和服務器管理程序的安全性

· 一般 CSRF保護

· 支持web應用中的外部內容的直接引用

· 重構 (connectors, lifecycle)及很多核心代碼的全面梳理

二、tomcat運行模式介紹:

Tomcat Connector(Tomcat連接器)有bio、nio、apr三種運行模式,那么這三種運行模式有什么區別呢,我們又如何修改Tomcat Connector的運行模式來提高Tomcat的運行性能呢?

bio模式:

bio(blocking I/O),顧名思義,即阻塞式I/O操作,表示Tomcat使用的是傳統的Java I/O操作(即java.io包及其子包)。Tomcat在默認情況下,就是以bio模式運行的。遺憾的是,就一般而言,bio模式是三種運行模式中性能最低的一種。我們可以通過Tomcat Manager來查看服務器的當前狀態。

[root@web?conf]#?cd?/data/node1/conf/tomcat-users.xml? [root@web?conf]#?vim?tomcat-users.xml?#添加進去兩行代碼,也就是新創建一個賬號和密碼。 <role?rolename="manager-gui"/><user?username="tomcat"?password="tomcat"?roles="manager-gui"/> 添加之后,然后保存退出此文件。想讓配置文件生效,需要重啟下tomcat。 [root@web?conf]#?/data/node1/bin/shutdown.sh? [root@web?conf]#?/data/node1/bin/startup.sh

?

點擊Server Status查看下狀態:


nio模式:

nio(new I/O),是Java SE 1.4及后續版本提供的一種新的I/O操作方式(即java.nio包及其子包)。Java nio是一個基于緩沖區、并能提供非阻塞I/O操作的Java API,因此nio也被看成是non-blocking I/O的縮寫。它擁有比傳統I/O操作(bio)更好的并發運行性能。要讓Tomcat以nio模式來運行也比較簡單,我們只需要在Tomcat安裝目錄/conf/server.xml文件中將如下配置:

<Connector?port="8080"?protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"?/> 中的protocol屬性值改為org.apache.coyote.http11.Http11NioProtocol即可: <Connector?port="8080"?protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000" redirectPort="8443"?/>

此時,我們就可以在Tomcat Manager中看到當前服務器狀態頁面的HTTP協議的Connector運行模式已經從http-bio-8080變成了http-nio-8080。


apr模式:

apr(Apache Portable Runtime/Apache可移植運行時),是Apache HTTP服務器的支持庫。你可以簡單地理解為,Tomcat將以JNI的形式調用Apache HTTP服務器的核心動態鏈接庫來處理文件讀取或網絡傳輸操作,從而大大地提高Tomcat對靜態文件的處理性能。 Tomcat apr也是在Tomcat上運行高并發應用的首選模式。如果我們的Tomcat不是在apr模式下運行,在啟動Tomcat的時候,我們可以在日志信息中看到類似如下信息:

2013-8-6 16:17:49 org.apache.catalina.core.AprLifecycleListener init

信息: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: xxx/xxx(這里是路徑信息)

Tomcat apr運行模式的配置是三種運行模式之中相對比較麻煩的一種。據官方文檔所述,Tomcat apr需要以下三個組件的支持:

APR library[APR庫]

JNI wrappers for APR used by Tomcat (libtcnative)[簡單地說,如果是在Windows操作系統上,就是一個名為tcnative-1.dll的動態鏈接庫文件]

OpenSSL libraries[OpenSSL庫]

此外,與配置nio運行模式一樣,也需要將對應的Connector節點的protocol屬性值改為org.apache.coyote.http11.Http11AprProtocol。 不過,上述繁瑣的操作都是Tomcat 7.0.30之前的版本才需要這樣配置,從Tomcat 7.0.30版本開始,Tomcat已經自帶了tcnative-1.dll等文件,并且默認就是在Tomcat apr模式下運行,因此我們只需要下載最新版本的Tomcat直接使用即可。


?默認情況下是bio模式,介紹下怎么更換成apr模式:

[root@web]#yum?install?-y?apr?apr-util?apr-devel [root@web]#?cd?/data/node1/bin [root@web?bin]#?tar?-zxvf?tomcat-native.tar.gz [root@web?bin]#?cd?tomcat-native-1.1.32-src/jni/native/ [root@web?native]#?./configure?--with-apr=/usr/bin/apr-1-config?--with-ssl=/usr/include/openssl/ [root@web?native]#?make?&&?make?install

tomcat和apr庫整合,需要修改shell腳本文件catalina.sh

[root@web?node1]#?vim?/data/node1/bin/catalina.sh?+99 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?-XX:+DisableExplicitGC"?? cygwin=false darwin=false CATALINA_OPTS="-Djava.library.path=/usr/local/apr/lib" os400=false

保存退出,重啟tomcat。看tomcat啟動輸出日志信息:

信息:?Deploying?web?application?directory?/data/node1/webapps/host-manager 七月?10,?2015?6:42:19?下午?org.apache.catalina.startup.HostConfig?deployDirectory 信息:?Deployment?of?web?application?directory?/data/node1/webapps/host-manager?has?finished?in?156?ms 七月?10,?2015?6:42:19?下午?org.apache.catalina.startup.HostConfig?deployDirectory 信息:?Deploying?web?application?directory?/data/node1/webapps/examples 七月?10,?2015?6:42:21?下午?org.apache.catalina.startup.HostConfig?deployDirectory 信息:?Deployment?of?web?application?directory?/data/node1/webapps/examples?has?finished?in?1,490?ms 七月?10,?2015?6:42:21?下午?org.apache.coyote.AbstractProtocol?start 信息:?Starting?ProtocolHandler?["http-apr-8080"] 七月?10,?2015?6:42:22?下午?org.apache.catalina.startup.Catalina?start 信息:?Server?startup?in?25191?ms 出現了["http-apr-8080"]字段,說明現在tomcat已經是apr模式。

三、下面介紹一下搭建tomcat服務器,所需的jdk環境變量:

Tomcat7.x服務器搭建,請大家參看:http://taokey.blog.51cto.com/4633273/1615551

jdk環境變量詳解: JAVA_HOME=/data/jdk1.7.0_71???????????????#JAVA_HOME環境變量,它是指向jdk的安裝目錄的絕對路徑,當JDK路徑改變的時候,僅需更改JAVA_HOME的變量值即可。 JRE_HOME=/data/jdk1.7.0_71/jre????????????#GRE_HOME環境變量,它是指向jre的安裝目錄的絕對路徑。 PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin???#?PATH環境變量。作用是指定命令搜索路徑,在shell下面執行命令時,它會到PATH變量所指定的路徑中查找看是否能找到相應的命令程序。我們需要把?jdk安裝目錄下的bin目錄增加到現有的PATH變量中,bin目錄中包含經常要用到的可執行文件如javac/java/javadoc等待,設置好?PATH變量后,就可以在任何目錄下執行javac/java等工具了。? CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib????#CLASSPATH環境變量。作用是指定類搜索路徑,要使用已經編寫好的類,前提當然是能夠找到它們了,JVM就是通過CLASSPTH來尋找類的。我們?需要把jdk安裝目錄下的lib子目錄中的dt.jar和tools.jar設置到CLASSPATH中,當然,當前目錄“.”也必須加入到該變量中。? export?JAVA_HOME?JRE_HOME?PATH?CLASSPATH? export?PATH=$PATH:JAVA_HOME/bin export?JAVA_HOME

四、Tomcat安全和性能優化。

  • 安全優化,關閉服務器端口,修改默認的端口。

  • 1).默認tomcat端口號是8080,最好修改一下,配置文件在server.xml中。

    server.xml默認有下面一行:

    <Server port="8005" shutdown="SHUTDOWN">

    這樣允許任何人只要telnet到服務器的8005端口,輸入"SHUTDOWN",然后回車,服務器立即就被關掉了。從安全的角度上考慮,我們需要把這個shutdown指令改成一個別人不容易猜測的字符串,可以同時把端口也改了。

    2).8009端口是tomcat和apache的mod_proxy_ajp,mod_jk溝通的端口,沒用到就關了。在tomcat的配置文件server.xml中這段注釋掉:

    <!--

    ? ? <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

    ? ? -->

    2.tomcat性能方面的優化:

    1).1.優化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:一定要作為第一個參數,在多個CPU時性能佳

    -Xms:初始Heap大小,使用的最小內存,cpu性能高時此值應設的大一些

    -Xmx:java heap最大值,使用的最大內存

    上面兩個值是分配JVM的最小和最大內存,取決于硬件物理內存的大小,建議均設為物理內存的一半。

    -XX:PermSize:設定內存的永久保存區域

    -XX:MaxPermSize:設定最大內存的永久保存區域

    -XX:MaxNewSize:

    -Xss 15120 這使得JBoss每增加一個線程(thread)就會立即消耗15M內存,而最佳值應該是128K,默認值好像是512k.

    +XX:AggressiveHeap 會使得 Xms沒有意義。這個參數讓jvm忽略Xmx參數,瘋狂地吃完一個G物理內存,再吃盡一個G的swap。

    -Xss:每個線程的Stack大小

    -verbose:gc 現實垃圾收集信息

    -Xloggc:gc.log 指定垃圾收集日志文件

    -Xmn:young generation的heap大小,一般設置為Xmx的3、4分之一

    -XX:+UseParNewGC :縮短minor收集的時間

    -XX:+UseConcMarkSweepGC :縮短major收集的時間

    關于JVM內存配置這里推薦幾篇文章大家可以看下:

    http://blog.chinaunix.net/uid-743704-id-2681326.html

    http://www.open-open.com/lib/view/open1324736648468.html

    ***linux/tomcatnacunxiangjie__zhuanzaibufennarong_523821_1373809710.html

    2).優化tomcat服務器中的server.xml配置文件,在配置文件中找到Connector port="8080",然后做如下修改:

    <Connector?port="8080"?protocol="org.apache.coyote.http11.Http11AprProtocol"connectionTimeout="20000"redirectPort="8443"?enableLookups="false"acceptCount="50"minProcessors="20"maxProcessors="200"?maxThreads="400"minSpareThreads="25"maxSpareThreads="75"URIEncoding="utf-8"?/>

    參數詳解:

    connnectionTimeout: 網絡連接超時,默認值20000,單位:毫秒。設置為0表示永不超時,這樣設置有隱患的。通常可設置為30000毫秒。(本系統由于與后臺系統接口超時時間較長,使用設置為60000)?

    redirectPort: 如果Connector支持非SSL請求,在收到一個要求使用SSL傳輸的請求以后,Catalina會自動將該請求重定向到這里指定的端口號。

    enableLookups: 是否反查域名,默認值為true。為了提高處理能力,應設置為false?

    acceptCount: 指定當所有可以使用的處理請求的線程數都被使用時,可以放到處理隊列中的請求數,超過這個數的請求將不予處理。默認值10。

    minProcessors:最小空閑連接線程數,用于提高系統處理性能,默認值為10

    maxProcessors:最大連接線程數,即:并發處理的最大請求數,默認值為75

    maxThreads: Tomcat使用線程來處理接收的每個請求。這個值表示Tomcat可創建的最大的線程數。默認值200。 可以根據機器的時期性能和內存大小調整,一般可以在400-500。最大可以在800左右。 ?

    minSpareThreads: Tomcat初始化時創建的線程數。默認值4。?

    maxSpareThreads: 一旦創建的線程超過這個值,Tomcat就會關閉不再需要的socket線程。默認值50。?

    URIEncoding: URI編碼用于解碼字節字符的格式,顯示中文,使用UTF-8即可。

    3).編寫tomcat重啟腳本,加入開機自啟動。

    more?/etc/init.d/tomcat #!/bin/bash#?chkconfig:?-?96?14#?description:?Tht?Apache?Tomcat?Servlet/JSP?container.#export?JAVA_HOME=/data/jdk1.7.0_71export?CATALINA_HOME=/data/tomcatexec?/data/tomcat/bin/catalina.sh?$* chmod?o+x?/etc/init.d/tomcat chkconfig?--add?tomcat chkconfig?node1?on chkconfig?--list?node1? node1???????????0:off???1:off???2:on????3:on????4:on????5:on????6:off

    五,Tomcat日志分割。

    1.下載并安裝cronolog軟件。

    cd?/taokey/tools/ tar?-zxf?cronolog-1.6.2.tar.gz cd?cronolog-1.6.2/ ./configure make?&&?make?install which?cronolog? /usr/local/sbin/cronolog

    2.修改tomcat的catalina.sh文件。

    cd?/data/node1/bin/ vim?catalina.sh?+373 touch?"$CATALINA_OUT"

    找到這行,注釋掉,應該是在373行附近,

    #touch "$CATALINA_OUT"

    然后找到這兩行,

    org.apache.catalina.startup.Bootstrap?"$@"?start?\ >>?"$CATALINA_OUT"?2>&1?"&"

    修改成:

    org.apache.catalina.startup.Bootstrap?"$@"?start?2>&1?| /usr/local/sbin/cronolog?"$CATALINA_BASE"/logs/catalina.%Y-%m-%d.out?>>?/dev/null?&

    3.重啟tomcat服務,查看生成的日志。

    /etc/init.d/tomcat?stop ps?-ef?|?grep?java /etc/init.d/tomcat?start tail?-f?/data/node1/logs/catalina.2015-10-26.out Oct?26,?2015?2:19:47?PM?org.apache.catalina.startup.HostConfig?deployDirectory INFO:?Deploying?web?application?directory?/data/node1 Oct?26,?2015?2:19:47?PM?org.apache.catalina.startup.HostConfig?deployDirectory INFO:?Deployment?of?web?application?directory?/data/node1?has?finished?in?143?ms Oct?26,?2015?2:19:47?PM?org.apache.coyote.AbstractProtocol?start INFO:?Starting?ProtocolHandler?["http-bio-8080"] Oct?26,?2015?2:19:47?PM?org.apache.coyote.AbstractProtocol?start INFO:?Starting?ProtocolHandler?["ajp-bio-8009"] Oct?26,?2015?2:19:47?PM?org.apache.catalina.startup.Catalina?start INFO:?Server?startup?in?1700?ms

    這樣就把catalina.out的日志按天分割了。今天是10月26就是catalina.2015-10-26.out,10月27日就是

    catalina.2015-10-27.out,這樣查找日志的時候,很方便快捷。

    總結

    以上是生活随笔為你收集整理的Tomcat介绍及性能优化的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 国产精品免费看久久久无码 | 成人午夜精品福利免费 | 日韩在线免费观看av | 成人国产精品免费 | 一级爱爱片| 国产视频不卡 | 久久夜色精品国产欧美乱 | 免费成人深夜在线观看 | 亚洲综合成人av | 亚洲精品在线观 | 色呦在线| 91原创视频在线观看 | va在线播放| 人人爽爽爽 | 强迫凌虐淫辱の牝奴在线观看 | 中国美女洗澡免费看网站 | 欧美性高潮视频 | 日本一区二区三区精品视频 | av日韩av | 东北女人av | 涩涩av| 四虎精品一区 | 日韩av毛片在线观看 | 天堂伊人 | 色播在线播放 | 国产男女猛烈无遮挡免费观看网站 | 国产中文视频 | 欧美大片一区二区三区 | 黄色免费视频观看 | 久久久久久蜜桃一区二区 | 青草视频在线观看免费 | 亚洲在线观看一区 | 性猛交xxxx乱大交孕妇2十 | 韩国一区二区三区在线观看 | aaa黄色大片 | 在线播放不卡av | 五月激情婷婷综合 | 韩国伦理大全 | ww黄色 | 一级影片在线观看 | 亚洲经典一区二区 | 成人乱码一区二区三区av | 五月天在线| 99精品国产99久久久久久97 | www.x日本 | 影音先锋伦理片 | 午夜性剧场 | 艳母动漫在线播放 | 一二三区免费 | 久久精品国产熟女亚洲AV麻豆 | 久久亚洲区 | 催眠调教后宫乱淫校园 | 九九精品在线观看 | 91插插插插 | 九九夜| 女儿的朋友5中汉字晋通话 欧美成人免费高清视频 | 成人免费毛片网站 | 日韩欧美一二三四区 | 亚洲成人精品网 | 午夜免费精品 | 国产精品swag| 免费av网址在线观看 | 91精品视频观看 | 黑巨茎大战欧美白妞 | av成人精品 | 欧美黄色大片网站 | 黄色喷水视频 | 国产精品成熟老女人 | 久久精品国产免费看久久精品 | 国产精品久久久久久久 | 欧美综合精品 | 男人肌肌桶女人肌肌 | 操操影视| 国产日韩91 | 不卡中文一二三区 | 黄色免费在线播放 | 日韩不卡av| 亚洲一区二区免费视频 | 天堂国产 | 伊人影院在线观看 | 久久久久一 | 天天干天天爽天天操 | 一本大道综合伊人精品热热 | 婷婷在线综合 | 午夜福利视频合集1000 | 色视频免费 | 桃色网址 | 国产高清在线观看视频 | 天堂网在线视频 | 丰满少妇在线观看bd | 在线观看国产福利 | 青青在线观看视频 | 日韩网红少妇无码视频香港 | 国产欧美日韩二区 | 中文字幕婷婷 | 日韩亚州 | 青青草婷婷 | 国产做爰全免费的视频软件 | 日本黄视频在线观看 |