在 Linux 和 Windows 下给 Tomcat 分配大内存设置方法

本文介绍如何通过调整JVM参数优化Tomcat性能,包括设置初始内存、最大内存等,并提供了不同操作系统下的具体配置示例。
其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。
可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置

实例,以下给出1G内存环境下java jvm 的参数设置参考:
JAVA_OPTS=”-server -Xms800m -Xmx800m -XX:PermSize=64M
-XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true ”
JAVA_OPTS=”-server -Xms768m -Xmx768m -XX:PermSize=128m
-XX:MaxPermSize=256m -XX:NewSize=192m -XX:MaxNewSize=384m”
CATALINA_OPTS=”-server -Xms768m -Xmx768m -XX:PermSize=128m
-XX:MaxPermSize=256m
-XX:NewSize=192m -XX:MaxNewSize=384m”

Linux:

在/usr/local/apache-tomcat-5.5.23/bin目录下的catalina.sh
添加:JAVA_OPTS=’-Xms512m -Xmx1024m’
要加“m”说明是MB,否则就是KB了,在启动tomcat时会报内存不足。
-Xms:初始值
-Xmx:最大值
-Xmn:最小值

Windows
在catalina.bat最前面加入
set JAVA_OPTS=-Xms128m -Xmx350m
如果用startup.bat启动tomcat,OK设置生效.够成功的分配200M内存.

但是如果不是执行startup.bat启动tomcat而是利用windows的系统服务启动tomcat服务,
上面的设置就不生效了,
就是说set JAVA_OPTS=-Xms128m -Xmx350m 没起作用.
上面分配200M内存就OOM了..
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服务,设置生效
(Tomcat 5.5 的话,在Apache Software Foundation下有个Procrun 2.0的 Tomcat5\Parameters\Java下
设置JvmMs和JvmMx的值就可以了,要修改10进制的值哦)

不过,OS对内存也有限制

附:如何获得JVM的最大可用内存

在命令行下用 java -XmxXXXXM -version 命令来进行测试,然后逐渐的增大XXXX的值,如果执行正常就表示指定的内存大小可用,否则会打印错误信息。

实际发现版本上有细微差别的JDK最大容许内存值都不尽相同,因此在实际的应用中还是要自己试验一下看到底内存能达到什么样的值。

通过这个表想说明的是,如果你的机器的内存太多的话,只能通过多运行几个实例来提供机器的利用率了,例如跑Tomcat,你可以多装几个Tomcat并做集群,依此类推。

这个人家测试的结果,我这里引用一下

公司 JVM版本 最大内存(兆)client 最大内存(兆)server
SUN 1.5.x 1492 1520
SUN 1.5.5(Linux) 2634 2660
SUN 1.4.2 1564 1564
SUN 1.4.2(Linux) 1900 1260
IBM 1.4.2(Linux) 2047 N/A
BEA JRockit 1.5 (U3) 1909 1902

所以跟OS的系统版本,jdk版本有很大的关系。要是希望充分利用内存,就考虑使用集群。

********************************************************************************************88

一、在tomcat的catalina.bat中修改,加入-Dcom.sun.management.jmxremote参数
set JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote

二、需要使用jdk5.0以上,打开bin目录下的jconsole.exe,即可连接跟踪tomcat的内存使用情况
### 在 Linux Windows 系统中重启 Tomcat 服务器的方法 #### Linux 系统中的方法Linux 系统中,可以通过脚本或手动操作来重启 Tomcat 服务器。以下是两种常见的方式: 1. **使用脚本重启 Tomcat** 可以编写一个简单的 Bash 脚本来实现 Tomcat 的自动重启。以下是一个示例脚本[^1]: ```bash #!/bin/bash # 设置 Tomcat 的安装目录启动脚本路径 TOMCAT_HOME=/opt/tomcat TOMCAT_STARTUP=$TOMCAT_HOME/bin/startup.sh # 停止 Tomcat 服务器 stop_tomcat() { echo "Stopping Tomcat..." $TOMCAT_HOME/bin/shutdown.sh sleep 5 } # 启动 Tomcat 服务器 start_tomcat() { echo "Starting Tomcat..." $TOMCAT_STARTUP } # 重启 Tomcat 服务器 restart_tomcat() { stop_tomcat start_tomcat } # 执行重启操作 restart_tomcat ``` 将上述脚本保存为 `restart_tomcat.sh`,赋予执行权限后运行即可。 2. **手动重启 Tomcat** 如果不使用脚本,也可以通过命令行手动重启 Tomcat。具体步骤如下[^2][^3]: - 进入 Tomcat 的 `bin` 目录: ```bash cd /usr/local/tomcat/bin ``` - 查找并终止当前运行的 Tomcat 进程: ```bash ps -ef | grep tomcat kill -9 <进程号> ``` - 启动 Tomcat: ```bash ./startup.sh ``` #### Windows 系统中的方法Windows 系统中,重启 Tomcat 的方式与 Linux 类似,但需要使用 Windows 的命令行工具(如 CMD 或 PowerShell)。 1. **通过命令行重启 Tomcat** - 打开 CMD 或 PowerShell。 - 进入 Tomcat 的 `bin` 目录,例如: ```cmd cd C:\Program Files\Apache Software Foundation\Tomcat 9.0\bin ``` - 停止 Tomcat 服务: ```cmd shutdown.bat ``` - 等待几秒钟后,启动 Tomcat 服务: ```cmd startup.bat ``` 2. **通过服务管理器重启 Tomcat** 如果 Tomcat 已作为服务安装,可以使用 Windows 服务管理器进行重启: - 按下 `Win + R`,输入 `services.msc`,回车。 - 找到名为 `Tomcat` 的服务(例如 `Apache Tomcat 9.0 Tomcat9`)。 - 右键单击该服务,选择“停止”,然后再选择“启动”。 #### 配置优化 无论是在 Linux 还是 Windows 系统中,都可以通过修改 `catalina.sh`(Linux)或 `catalina.bat`(Windows)来优化 Tomcat 的内存分配其他性能参数[^4]。例如,在 `catalina.sh` 中添加以下内容: ```bash 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" ``` 对于 Windows,可以在 `catalina.bat` 中进行类似的设置。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值