為了解決tomcat在大進(jìn)行大并發(fā)請(qǐng)求時(shí),出現(xiàn)內(nèi)存溢出的問題,請(qǐng)修改tomcat的內(nèi)存大小,其中分為以下兩種方式:
一、使用 catalina.bat 等命令行方式運(yùn)行的 tomcat
查看系統(tǒng)最大支持內(nèi)存命令:java -Xmx1024m -version
1、修改 tomcat\bin\Catalina.bat 文件
windows環(huán)境下:
在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環(huán)境下:
打開在Tomcat的安裝目錄的bin文件的catalina.sh文件,進(jìn)入編輯狀態(tài).
在注釋后面加上如下腳本:
JAVA_OPTS='-Xms512m -Xmx1024m'
JAVA_OPTS="$JAVA_OPTS -server -XX:PermSize=64M -XX:MaxPermSize=256m"
其中 JAVA_OPTS='-Xms512m -Xmx1024m' 是設(shè)置Tomcat使用的內(nèi)存的大小.
-XX:PermSize=64M -XX:MaxPermSize=256m 指定類空間(用于加載類)的內(nèi)存大小
保存后,重新以命令行的方式運(yùn)行 tomcat ,即可,然后通過最后面介紹的如何觀察tomcat現(xiàn)有內(nèi)存情況的方法進(jìn)行查看是否已經(jīng)變更成功。
二、使用 系統(tǒng)中的 “服務(wù)”,或者開始菜單的可執(zhí)行程序運(yùn)行的tomcat
1、關(guān)閉 現(xiàn)在正在運(yùn)行的tomcat
2.1 [注意]
[高版本tomcat配置方法]
如果是tomcat 5.5 或者是 5.0.28 之后的版本,在 Java 選項(xiàng)卡中,下方,會(huì)有
Inital memory Pool:
Maximum memory Pool:
Thread stack size:
三個(gè)輸入框,在這里即可不用做上面的操作,直接配置內(nèi)存大小,只需要設(shè)置
Inital memory Pool 為 256
Maximum memory Pool 為 512
點(diǎn)擊確定后,重啟tomcat 生效
如果您是低版本的tomcat,發(fā)現(xiàn)沒有上面那幾個(gè)錄入框,請(qǐng)看下面的操作步驟
[低版本tomcat配置方法]
在開始菜單中,找到“Apache Tomcat 5.0”,并選擇“Configure Tomcat”,在彈出的對(duì)話框窗口中,切換到 Java VM 選項(xiàng)卡,并在 Java Options 輸入框的最前面輸入
-Xms256m -Xmx512m
即輸入框中的內(nèi)容會(huì)像下面的代碼(與自己的環(huán)境有所區(qū)別)
-Xms256m -Xmx512m
-Dcatalina.home="C:\tomcat5"
-Djava.endorsed.dirs="C:\tomcat5\common\endorsed"
-Xrs
設(shè)置完后,點(diǎn)擊“確定”,并重啟tomcat即可。
三、查看現(xiàn)有tomcat的內(nèi)存大小情況
1、啟動(dòng)tomcat
2、訪問 http://localhost:8080/manager/status ,并輸入您在安裝tomcat時(shí)輸入的用戶與口令,如 admin ,密碼 admin(密碼是您在tomcat安裝時(shí)輸入的)
注:添加用戶,修改conf/tomcat-users.xml
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<role rolename="tomcat"/>
<role rolename="role1"/>
<role rolename="manager"/>
<role rolename="admin"/>
<user username="tomcat" password="tomcat" roles="tomcat"/>
<user username="both" password="tomcat" roles="tomcat,role1"/>
<user username="role1" password="tomcat" roles="role1"/>
<user username="admin" password="admin" roles="admin,manager"/>
</tomcat-users>
3、進(jìn)入了Server Status頁面,可以在JVM表格中看到
Free memory: 241.80 MB Total memory: 254.06 MB Max memory: 508.06 MB
上面的文字即代表了,當(dāng)前空閑內(nèi)存、當(dāng)前總內(nèi)存、最大可使用內(nèi)存三個(gè)數(shù)據(jù)。
確定了最大內(nèi)存足夠大時(shí),tomcat即可正常運(yùn)轉(zhuǎn)