⑴ 是否了解tomcat的調優工作,需要修改哪些配置文件實
Tomcat性能調優方案
一、操作系統調優
對於操作系統優化來說,是盡可能的增大可使用的內存容量、提高CPU的頻率,保證文件系統的讀寫速率等。經過壓力測試驗證,在並發連接很多的情況下,CPU的處理能力越強,系統運行速度越快。。
【適用場景】 任何項目。
二、java虛擬機調優
應該選擇SUN的JVM,在滿足項目需要的前提下,盡量選用版本較高的JVM,一般來說高版本產品在速度和效率上比低版本會有改進。
JDK1.4比JDK1.3性能提高了近10%-20%,JDK1.5比JDK1.4性能提高25%-75%。
因此對性能要求較高的情況推薦使用 JDK1.6。
【適用場景】 任何項目。
三、Apache集成Tomcat
Web伺服器專門處理HTTP請求,應用伺服器是通過很多協議為應用提供商業邏輯。雖然Tomcat也可以作web伺服器,但其處理靜態html的速度比不上Apache,且其作為web伺服器的功能遠不如Apache,因此把Apache和Tomcat集成起來,將html和Jsp的功能部分進行明確分工,讓Tomcat只處理Jsp部分,其他的由Apache,IIS等web伺服器去處理,由此大大提高Tomcat的運行效率。
如果一個項目中大量使用了靜態頁面、大量的圖片等,並有有較大的訪問量,推薦使用Apache集成Tomcat的方式來提高系統的整體性能。
Apache和Tomcat的整合有三種方式,分別是JK、http_proxy和ajp_proxy.其中JK方式是最常見的方式,JK本身有兩個版本分別是1和2,目前1最新版本是1.2.8,而版本2早已經廢棄了。http_proxy是利用Apache自帶的mod_proxy模塊使用代理技術來連接Tomcat。Ajp_proxy連接方式其實跟http_proxy方式一樣,都是由mod_proxy所提供的功能。只需要把配置中的http://換成ajp://,同時連接的是Tomcat的AJP Connector所在的埠。
相對於JK的連接方式,後兩種在配置上比較簡單的,靈活性方面也一點都不遜色。但就穩定性而言不像JK這樣久經考驗,所以建議採用JK的連接方式。
Apache+JK+Tomcat配置:
使用到的兩個配置文件分別是:httpd.conf和mod_jk.conf。其中httpd.conf是Apache伺服器的配置文件,用來載入JK模塊以及指定JK配置文件信息。mod_jk.conf是到Tomcat伺服器的連接定義文件。
【部署步驟】
1.安裝Apache伺服器
2.部署Tomcat
3.將mod_jk.so拷貝到moles目錄下面
4.修改httpd.conf和mod_jk.conf
【適用場景】 大量使用靜態頁面的應用系統。
四、Apache和Tomcat集群
對於並發要求很高的系統,我們需要採取負載均衡的方式來分擔Tomcat伺服器的壓力。負載均衡實現大概有四種:第一是通過DNS,但只能簡單的實現輪流分配,不能處理故障;第二是基於MS IIS,windows 2003 server本身就帶了負載均衡服務;第三是硬體方式,通過交換機功能或專門的負載均衡設備來實現;第四種是軟體的方式,通過一台負載均衡伺服器進行,上面安裝軟體。使用Apache Httpd Server做負載均衡器,Tomcat集群節點使用Tomcat就可以做到上述第四種方式,這種方式比較靈活,成本相對比較低,另外一個很大的優點就是可以根據應用情況和伺服器的情況做一些靈活的配置。所以推薦使用Apache+Tomcat集群來實現負載均衡。
採用Tomcat集群可以最大程度的發揮伺服器的性能,可以在配置較高的伺服器上部署多個Tomcat,也可以在多台伺服器上分別部署Tomcat,Apache和Tomcat整合的方式還是JK方式。經過驗證,系統對大用戶量使用的響應方面,Apache+3Tomccat集群> Apache+2Tomcat集群 > Apache集成Tomcat > 單個Tomcat。並且採用Apache+多Tomcat集群的部署方式時,如果一個Tomcat出現宕機,系統可以繼續使用,所以在硬體系統性能足夠優越的情況下,需要盡量發揮軟體的性能,可以採用增加Tomcat集群的方式。
Apache+Tomcat集群的方式使用到得配置文件有httpd.conf、mod_jk.conf、workers.properties。其中mod_jk.conf是對JK信息的配置,包括JK的路徑等,workers.properties配置文件是對Tomcat伺服器的連接定義文件。
Apache需要調整運行參數,這樣才能構建一個適合相應網路環境的web服務。其中可進行的優化配置如下:
1. 設置MPM(Multi Processing Moles多道處理模塊)。ThreadPerChild,這個參數用於設置每個進程的線程數,在Windows環境下默認值是64,最大值是1920,建議設置為100-500之間,伺服器性能高的話值大一些,反之小一些。MaxRequestPerChild表示每個子進程能夠處理的最大請求數。這個參數的值更大程度上取決於伺服器的內存,如果內存比較大的話可以設置為很大的參數,否則設置一個較小的值,建議值是3000.
2. 關閉DNS和名字解析 HostnameLookups off
3. 打開UseCanonicalName模塊 UseCanonicalName on
4. 關閉多餘模塊 一般來說,不需要載入的模塊有,mod_include.so、mod_autoindex.so、mod_access.so、mod_auth.so.
5. 打開KeepAlive支持
KeepAlive on, KeepAliveTimeout 15 MaxKeepAliveRequests 1000
根據實際經驗,通過Apache和Tomcat集群的方式提高系統性能的效果十分明顯,這種方式可以最大化的利用硬體資源,通過多個Tomcat的處理來分擔單Tomcat時的壓力。
【部署步驟】
1.安裝Apache伺服器
2.部署Tomcat集群,即多個相同的Tomcat。
3.將mod_jk.so拷貝到moles目錄下面
4.修改httpd.conf、mod_jk.conf和workers.properties
【適用場景】 並發用戶量及在線使用用戶數量比較高的系統。
五、Tomcat自身優化
1. JVM參數調優:-Xms<size> 表示JVM初始化堆的大小,-Xmx<size>表示JVM堆的最大值。這兩個值的大小一般根據需要進行設置。當應用程序需要的內存超出堆的最大值時虛擬機就會提示內存溢出,並且導致應用服務崩潰。因此一般建議堆的最大值設置為可用內存的最大值的80%。在catalina.bat中,設置JAVA_OPTS='-Xms256m -Xmx512m',表示初始化內存為256MB,可以使用的最大內存為512MB。
2. 禁用DNS查詢
當web應用程序向要記錄客戶端的信息時,它也會記錄客戶端的IP地址或者通過域名伺服器查找機器名轉換為IP地址。DNS查詢需要佔用網路,並且包括可能從很多很遠的伺服器或者不起作用的伺服器上去獲取對應的IP的過程,這樣會消耗一定的時間。為了消除DNS查詢對性能的影響我們可以關閉DNS查詢,方式是修改server.xml文件中的enableLookups參數值:
Tomcat4
<Connector className="org.apache.coyote.tomcat4.CoyoteConnector" port="80" minProcessors="5" maxProcessors="75" enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" useURIValidationHack="false" disableUploadTimeout="true" />
Tomcat5
<Connector port="80" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" disableUploadTimeout="true"/>
3. 調整線程數
通過應用程序的連接器(Connector)進行性能控制的的參數是創建的處理請求的線程數。Tomcat使用線程池加速響應速度來處理請求。在Java中線程是程序運行時的路徑,是在一個程序中與其它控制線程無關的、能夠獨立運行的代碼段。它們共享相同的地址空間。多線程幫助程序員寫出CPU最大利用率的高效程序,使空閑時間保持最低,從而接受更多的請求。
Tomcat4中可以通過修改minProcessors和maxProcessors的值來控制線程數。這些值在安裝後就已經設定為默認值並且是足夠使用的,但是隨著站點的擴容而改大這些值。minProcessors伺服器啟動時創建的處理請求的線程數應該足夠處理一個小量的負載。也就是說,如果一天內每秒僅發生5次單擊事件,並且每個請求任務處理需要1秒鍾,那麼預先設置線程數為5就足夠了。但在你的站點訪問量較大時就需要設置更大的線程數,指定為參數maxProcessors的值。maxProcessors的值也是有上限的,應防止流量不可控制(或者惡意的服務攻擊),從而導致超出了虛擬機使用內存的大小。如果要加大並發連接數,應同時加大這兩個參數。web server允許的最大連接數還受制於操作系統的內核參數設置,通常Windows是2000個左右,linux是1000個左右。
在Tomcat5對這些參數進行了調整,請看下面屬性:
maxThreads Tomcat使用線程來處理接收的每個請求。這個值表示Tomcat可創建的最大的線程數。
acceptCount 指定當所有可以使用的處理請求的線程數都被使用時,可以放到處理隊列中的請求數,超過這個數的請求將不予處理。
connnectionTimeout 網路連接超時,單位:毫秒。設置為0表示永不超時,這樣設置有隱患的。通常可設置為30000毫秒。
minSpareThreads Tomcat初始化時創建的線程數。
maxSpareThreads 一旦創建的線程超過這個值,Tomcat就會關閉不再需要的socket線程。
最好的方式是多設置幾次並且進行測試,觀察響應時間和內存使用情況。在不同的機器、操作系統或虛擬機組合的情況下可能會不同,而且並不是所有人的web站點的流量都是一樣的,因此沒有一刀切的方案來確定線程數的值。
六、APR庫使用
Tomcat中使用APR庫,其實就是在Tomcat中使用JNI的方式來讀取文件以及進行網路傳輸。可以大大提升Tomcat對靜態文件的處理性能,同時如果你使用了HTTPS方式傳輸的話,也可以提升SSL的處理性能。
一般在Windows下,可以直接下載編譯好的二進製版本的dll庫文件來使Tomcat啟用APR,一般建議拷貝庫文件tcnative-1.dll到Tomcat的bin目錄下。而在Linux下,可以直接解壓和安裝bin目錄下的tomcat_native.tar.gz文件,編譯之前要確保apr庫已經安裝。
怎麼才能判斷Tomcat是否已經啟用了APR庫呢?方法是通過看Tomcat的啟動日誌:
如果沒有啟用APR,則啟動日誌一般有這么一條:
org.apache.coyote.http11.Http11Protocol start
如果啟用了APR,則這條日誌就會變成:
org.apache.coyote.http11.Http11AprProtocol start
tcnative-1.dll 下載地址:http://tomcat.heanet.ie/native/
調優綜述
根據以上分析,如果想要Tomcat達到最優的效果,首先要爭取使得操作系統以及網路資源達到最優,並且最好使用高版本的JDK。對於有大量靜態頁面的系統,採用Apache集成Tomcat的方式,把靜態頁面交由Apache處理,動態部分交由Tomcat處理,能極大解放Tomcat的處理能力。使用ARP庫也能極大的提高Tomcat對靜態文件的處理能力。對於並發要求較高的系統,採用Apache加Tomcat集群的方式,將負載分別分擔到多個Tomcat上,能很大的提高系統的性能,充分利用硬體資源。同時需要對Tomcat自身進行優化,包括增大內存、調節並發線程數等。
⑵ linux 怎麼給tomcat增加內存
在bin/catalina.bat(來windows系統tomcat)或者bin/catalina.sh(Linux系統tomcat)中源設置變數,示例如下: JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128m -Xms800m -Xmx800m -XX:MaxNewSize=256m" Xms是最小內存,Xmx是最大內存,P...
⑶ linux tomcat jvm內存 多少合適
為了解決tomcat在進行大並發請求時,出現內存溢出的問題,請修改tomcat的內存大小,其中分為以下兩種方式:
一、使用 catalina.bat 等命令行方式運行的 tomcat
查看系統是否能支持所填最大內存命令:java -Xmx1024m -version,當所填值不合法時,執行該命令將報錯
1、修改 tomcat\bin\Catalina.bat 文件
windows環境下:
在166行左右
rem Execute Java with the applicable properties 」以下每行
%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%
在 %DEBUG_OPTS% 後面添加-Xms256m -Xmx512m
linux環境下:
打開在Tomcat的安裝目錄的bin文件的catalina.sh文件,進入編輯狀態.
在注釋後面加上如下腳本:
JAVA_OPTS='-Xms512m -Xmx1024m'
JAVA_OPTS="$JAVA_OPTS -server -XX:PermSize=64M -XX:MaxPermSize=256m"
其中 JAVA_OPTS='-Xms512m -Xmx1024m' 是設置Tomcat使用的內存的大小.
-XX:PermSize=64M -XX:MaxPermSize=256m 指定類空間(用於載入類)的內存大小
保存後,重新以命令行的方式運行 tomcat ,即可,然後通過最後面介紹的如何觀察tomcat現有內存情況的方法進行查看是否已經變更成功。
二、使用 系統中的 「服務」,或者開始菜單的可執行程序運行的tomcat
1、關閉 現在正在運行的tomcat
2.1 [注意]
[高版本tomcat配置方法]
如果是tomcat 5.5 或者是 5.0.28 之後的版本,在 Java 選項卡中,下方,會有
Inital memory Pool:
Maximum memory Pool:
Thread stack size:
三個輸入框,在這里即可不用做上面的操作,直接配置內存大小,只需要設置
Inital memory Pool 為 256
Maximum memory Pool 為 512
點擊確定後,重啟tomcat 生效
如果您是低版本的tomcat,發現沒有上面那幾個錄入框,請看下面的操作步驟
[低版本tomcat配置方法]
在開始菜單中,找到「Apache Tomcat 5.0」,並選擇「Configure Tomcat」,在彈出的對話框窗口中,切換到 Java VM 選項卡,並在 Java Options 輸入框的最前面輸入
-Xms256m -Xmx512m
即輸入框中的內容會像下面的代碼(與自己的環境有所區別)
-Xms256m -Xmx512m
-Dcatalina.home="C:\tomcat5"
-Djava.endorsed.dirs="C:\tomcat5\common\endorsed"
-Xrs
設置完後,點擊「確定」,並重啟tomcat即可。
三、查看現有tomcat的內存大小情況
1、啟動tomcat
2、訪問 ,並輸入您在安裝tomcat時輸入的用戶與口令,如 admin ,密碼 admin(密碼是您在tomcat安裝時輸入的)
註:添加用戶,修改conf/tomcat-users.xml
3、進入了Server Status頁面,可以在JVM表格中看到
Free memory: 241.80 MB Total memory: 254.06 MB Max memory: 508.06 MB
上面的文字即代表了,當前空閑內存、當前總內存、最大可使用內存三個數據。
確定了最大內存足夠大時,tomcat即可正常運轉
最後總結下內存設置中常用的幾個參數
(1)-Xms,jvm啟動時,初始分配的堆/棧內存
(2)-Xmx,JVM最大允許分配的堆/棧內存,按需分配
(3)-Xss,設定每個線程的堆棧大小
(4)-XX:PermSize,JVM初始分配的非堆內存
(5)-XX:MaxPermSize,JVM最大允許分配的非堆內存,按需分配
舉例:
-Xms256m -Xms512m -XX:PermSize=64m -XX:MaxPermSize=128m
⑷ 如何設置Tomcat的JVM虛擬機內存大小
jvm內存有好幾種呢
windows下修改JVM內存大小:
情況一:解壓版本的Tomcat, 要通過startup.bat啟動tomcat才能載入配置
要添加在tomcat 的bin 下catalina.bat 里
rem Guess CATALINA_HOME if not defined
set CURRENT_DIR=%cd%後面添加,紅色的為新添加的.
set JAVA_OPTS=-Xms256m -Xmx512m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m -Djava.awt.headless=true
情況二:安裝版的Tomcat下沒有catalina.bat
windows服務執行的是bin\tomcat.exe.他讀取注冊表中的值,而不是catalina.bat的設置.
修改注冊表HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Tomcat Service Manager\Tomcat5\Parameters\JavaOptions
原值為
-Dcatalina.home="C:\ApacheGroup\Tomcat 5.0"
-Djava.endorsed.dirs="C:\ApacheGroup\Tomcat 5.0\common\endorsed"
-Xrs
加入 -Xms300m -Xmx350m
重起tomcat服務,設置生效
jvm參數說明:
-server 一定要作為第一個參數,啟用JDK的server版本,在多個CPU時性能佳
-Xms java Heap初始大小。 默認是物理內存的1/64。
-Xmx java heap最大值。建議均設為物理內存的80%。不可超過物理內存。
-Xmn java heap最小值,一般設置為Xmx的3、4分之一。
-XX:PermSize 設定內存的永久保存區初始大小,預設值為64M。
-XX:MaxPermSize 設定內存的永久保存區最大大小,預設值為64M。
-XX:SurvivorRatio=2 生還者池的大小,默認是2。如
-XX:NewSize 新生成的池的初始大小。 預設值為2M。
-XX:MaxNewSize 新生成的池的最大大小。 預設值為32M。
+XX:AggressiveHeap 讓jvm忽略Xmx參數,瘋狂地吃完一個G物理內存,再吃盡一個G的swap。
-Xss 每個線程的Stack大小
-verbose:gc 現實垃圾收集信息
-Xloggc:gc.log 指定垃圾收集日誌文件
-XX:+UseParNewGC 縮短minor收集的時間
-XX:+UseConcMarkSweepGC 縮短major收集的時間
-XX:userParNewGC 可用來設置並行收集(多CPU)
-XX:ParallelGCThreads 可用來增加並行度(多CPU)
-XX:UseParallelGC 設置後可以使用並行清除收集器(多CPU)
⑸ tomcat怎麼配置內存perm size
tomcat內存優化
linux修改TOMCAT_HOME/bin/catalina.sh,在前面加入
JAVA_OPTS="-XX:PermSize=64M -XX:MaxPermSize=128m -Xms512m -Xmx1024m -Duser.timezone=Asia/Shanghai"
windows修改TOMCAT_HOME/bin/catalina.bat,在前面加入
set JAVA_OPTS=-XX:PermSize=64M -XX:MaxPermSize=128m -Xms512m -Xmx1024m
最大堆內存是1024m,對於現在的硬體還是偏低,實施時,還是按照機器具體硬體配置優化。
⑹ linux下tomcat6內存如何設置(詳細)我在catalina.sh裡面加了JAVA_OPTS每次重啟報指令無效!!
這樣寫:
declare -x JAVA_OPTS="-Xms128m -Xmx256"
"declare -x"一定要加,不然就會報-x指令無效,還有後面的引號也要注意加上
⑺ tomcat內存不斷增加切不能釋放 linux環境 求原因以及解決辦法詳細,新手求耐心,在線等
請使用如下命令:
ps-ax|grep tomcat 會出現tomcat的進程信息
類似如下的信息
24674 ? Sl 2:53 /usr/java/jdk1.6.0_20/bin/java -Xms256m -Xmx512m -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.loggin
然後使用kill + 進程id 命令內殺死該進程,即可釋容放內存
例如kill 24674
⑻ linux下tomcat怎麼優化
WEB伺服器優化
1、 更換tomcat5為tomcat6
版本測試服務版本即可
2、 加大tomcat內存
修改bin下的catalina.sh文件,增加青綠色部分
JAVA_OPTS='-Xms768m -Xmx1648m -XX:MaxPermSize=512m'
3、 加大tomcat連接數
修改conf下的server.xml文件,修改青綠色部分參數值
maxThreads="500"
minSpareThreads="100"
enableLookups="false"
connectionTimeout="30000"
伺服器優化
Ø 調整IP連接並發數 vi /etc/sysctl.conf
net.ipv4.ip_conntrack_max = 393024
net.ipv4.tcp_tw_reuse = 1 \\表示開啟重用.允許將TIME-WAIT sockets重新用於新的TCP連接,默認為0表示關閉;
net.ipv4.tcp_tw_recycle = 1 \\表示開啟TCP連接中TIME-WAIT sockets的快速回收,默認為0,表示關閉。
net.ipv4.tcp_syncookies = 1 \\開啟SYN Cookies. 當SYN等待隊列溢出, 啟用cookies來處理,防範少量SYN攻擊.
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.tcp_keepalive_time = 1200
/sbin/sysctl –p
Ø 調整linux系統句柄數
vi /etc/profile
ulimit -n 10240 \\注意需要為每個Weblogic用戶都更改這個參數,而不僅僅是系統的根用戶
cd /opt/bea
vi .bash_profile
ulimit -n 10240 \\增加
Ø 在limists.conf文件末添加以下參數
more /etc/security/limits.conf
* soft nproc 10240
* hard nproc 10240
* soft nofile 10240
* hard nofile 10240
Ø 將下列參數增加到/etc/pam.d/login
session required /lib/security/pam_limits.so