標籤

4GL (1) 人才發展 (10) 人物 (3) 太陽能 (4) 心理 (3) 心靈 (10) 文學 (31) 生活常識 (14) 光學 (1) 名句 (10) 即時通訊軟體 (2) 奇狐 (2) 爬蟲 (1) 音樂 (2) 產業 (5) 郭語錄 (3) 無聊 (3) 統計 (4) 新聞 (1) 經濟學 (1) 經營管理 (42) 解析度 (1) 遊戲 (5) 電學 (1) 網管 (10) 廣告 (1) 數學 (1) 機率 (1) 雜趣 (1) 證券 (4) 證券期貨 (1) ABAP (15) AD (1) agentflow (4) AJAX (1) Android (1) AnyChart (1) Apache (14) BASIS (4) BDL (1) C# (1) Church (1) CIE (1) CO (38) Converter (1) cron (1) CSS (23) DMS (1) DVD (1) Eclipse (1) English (1) excel (5) Exchange (4) Failover (1) Fedora (1) FI (57) File Transfer (1) Firefox (3) FM (2) fourjs (1) Genero (1) gladiatus (1) google (1) Google Maps API (2) grep (1) Grub (1) HR (2) html (23) HTS (8) IE (1) IE 8 (1) IIS (1) IMAP (3) Internet Explorer (1) java (4) JavaScript (22) jQuery (6) JSON (1) K3b (1) ldd (1) LED (3) Linux (117) Linux Mint (4) Load Balance (1) Microsoft (2) MIS (2) MM (51) MSSQL (1) MySQL (27) Network (1) NFS (1) Office (1) OpenSSL (1) Oracle (126) Outlook (3) PDF (6) Perl (60) PHP (33) PL/SQL (1) PL/SQL Developer (1) PM (3) Postfix (2) postfwd (1) PostgreSQL (1) PP (50) python (5) QM (1) Red Hat (4) Reporting Service (28) ruby (11) SAP (234) scp (1) SD (16) sed (1) Selenium (3) Selenium-WebDriver (5) shell (5) SQL (4) SQL server (8) sqlplus (1) SQuirreL SQL Client (1) SSH (2) SWOT (3) Symantec (2) T-SQL (7) Tera Term (2) tip (1) tiptop (24) Tomcat (6) Trouble Shooting (1) Tuning (5) Ubuntu (37) ufw (1) utf-8 (1) VIM (11) Virtual Machine (2) VirtualBox (1) vnc (3) Web Service (2) wget (1) Windows (19) Windows (1) WM (6) Xvfb (2) youtube (1) yum (2)

2013年10月19日 星期六

Tomcat的JVM設置和連接數設置

http://fecbob.pixnet.net/blog/post/38257503

一、Tomcat的JVM提示記憶體溢出

查看%TOMCAT_HOME%\logs資料夾下,日誌檔是否有記憶體溢出錯誤

二、修改Tomcat的JVM

1、錯誤提示:java.lang.OutOfMemoryError: JAVA heap space

Tomcat預設可以使用的記憶體為128MB,在較大型的應用專案中,這點記憶體是不夠的,有可能導致系統無法運行。常見的問題是報Tomcat記憶體溢出錯誤,Out of Memory(系統記憶體不足)的異常,從而導致用戶端顯示500錯誤,一般調整Tomcat的使用記憶體即可解決此問題。

Windows環境下修改「%TOMCAT_HOME%\bin\catalina.bat」檔,在檔開頭增加如下設置:set JAVA_OPTS=-Xms256m -Xmx512m

Linux環境下修改「%TOMCAT_HOME%\bin\catalina.sh」檔,在檔開頭增加如下設置:JAVA_OPTS=’-Xms256m -Xmx512m’

其中,-Xms設置初始化記憶體大小,-Xmx設置可以使用的最大記憶體。

2、錯誤提示:java.lang.OutOfMemoryError: PermGen space

原因:
PermGen space的全稱是Permanent Generation space,是指記憶體的永久保存區域,這塊記憶體主要是被JVM存
放Class和Meta資訊的,Class在被Loader時就會被放到PermGen space中,它和存放類實例(Instance)的
Heap區域不同,GC(Garbage Collection)不會在主程式運行期對PermGen space進行清理,所以如果你的應用
中有很CLASS的話,就很可能出現PermGen space錯誤,這種錯誤常見在web伺服器對JSP進行pre compile的
時候。如果你的WEB APP下都用了大量的協力廠商jar, 其大小超過了jvm預設的大小(4M)那麼就會產生此錯誤信
息了。
解決方法:

在catalina.bat的第一行增加:
set JAVA_OPTS=-Xms64m -Xmx256m -XX:PermSize=128M -XX:MaxNewSize=256m -
XX:MaxPermSize=256m
在catalina.sh的第一行增加:
JAVA_OPTS=-Xms64m -Xmx256m -XX:PermSize=128M -XX:MaxNewSize=256m -
XX:MaxPermSize=256m

3、JVM設置

堆的尺寸
-Xmssize in bytes
設定JAVA堆的初始尺寸,缺省尺寸是2097152 (2MB)。這個值必須是1024個位元組(1KB)的倍數,且比它大。(-server選項把缺省尺寸增加到32M。
-Xmnsize in bytes
為Eden物件設定初始JAVA堆的大小,缺省值為640K。(-server選項把缺省尺寸增加到2M。)
-Xmxsize in bytes
設定JAVA堆的最大尺寸,缺省值為64M,(-server選項把缺省尺寸增加到128M。) 最大的堆尺寸達到將近2GB(2048MB)。

請注意:很多垃圾收集器的選項依賴于堆大小的設定。請在微調垃圾收集器使用記憶體空間的方式之前,確認是否已經正確設定了堆的尺寸。

垃圾收集:記憶體的使用
-XX:MinHeapFreeRatio=percentage as a whole number
修改垃圾回收之後堆中可用記憶體的最小百分比,缺省值是40。如果垃圾回收後至少還有40%的堆記憶體沒有被釋放,則系統將增加堆的尺寸。
-XX:MaxHeapFreeRatio=percentage as a whole number
改變垃圾回收之後和堆記憶體縮小之前可用堆記憶體的最大百分比,缺省值為70。這意味著如果在垃圾回收之後還有大於70%的堆記憶體,則系統就會減少堆的尺寸。
-XX:NewSize=size in bytes
為已分配記憶體的物件中的Eden代設置缺省的記憶體尺寸。它的缺省值是640K。(-server選項把缺省尺寸增加到2M。
-XX:MaxNewSize=size in bytes
允許您改變初期物件空間的上限,新建物件所需的記憶體就是從這個空間中分配來的,這個選項的缺省值是640K。(-server選項把缺省尺寸增加到2M。
-XX:NewRatio=value
改變新舊空間的尺寸比例,這個比例的缺省值是8,意思是新空間的尺寸是舊空間的1/8。
-XX:SurvivorRatio=number
改變Eden物件空間和殘存空間的尺寸比例,這個比例的缺省值是10,意思是Eden物件空間的尺寸比殘存空間大survivorRatio+2倍。
-XX:TargetSurvivorRatio=percentage
設定您所期望的空間提取後被使用的殘存空間的百分比,缺省值是50。
-XX:MaxPermSize=size in MB
長久代(permanent generation)的尺寸,缺省值為32(32MB)。

三、查看Tomcat的JVM記憶體

1. Tomcat6中沒有設置任何預設使用者,因而需要手動往Tomcat6的conf資料夾下的tomcat-users.xml檔中添加使用者。


如:<role rolename="manager"/>
<user username="tomcat" password="tomcat" roles="manager"/>

注:添加完需要重啟Tomcat6。


2. 訪問HTTP://localhost:8080/manager/status,輸入上面添加的使用者名和密碼。


3. 然後在如下面的JVM下可以看到記憶體的使用方式。

JVM
Free memory: 2.50 MB Total memory: 15.53 MB Max memory: 63.56 MB

四、Tomcat連接數設置

在tomcat設定檔server.xml中的<Connector ... />配置中,和連接數相關的參數有:
minProcessors:最小空閒連接線程數,用於提高系統處理性能,預設值為10
maxProcessors:最大連接線程數,即:併發處理的最大請求數,預設值為75
acceptCount:允許的最大連接數,應大於等於maxProcessors,預設值為100
enableLookups:是否反查功能變數名稱,取值為:true或false。為了提高處理能力,應設置為false
connectionTimeout:網路連接超時,單位:毫秒。設置為0表示永不超時,這樣設置有隱患的。通常可設置為30000毫秒。

其中和最大連接數相關的參數為maxProcessors和acceptCount。如果要加大併發連接數,應同時加大這兩個參數。


web server允許的最大連接數還受制于作業系統的內核參數設置,通常Windows是2000個左右,Linux是1000個左右。Unix中如何設置這些參數,請參閱Unix常用監控和管理命令

沒有留言:

張貼留言