1、tomcat内存优化
1、linux
修改TOMCAT_HOME/bin/catalina.sh,在文件顶端加入
JAVA_OPTS=-server -Xms1024m -Xmx2048m -XX:PermSize=64M -XX:MaxNewSize=512m -XX:MaxPermSize=128m
2、windows
修改TOMCAT_HOME/bin/catalina.bat,在文件顶端加入
set JAVA_OPTS=-server -Xms1024m -Xmx2048m -XX:PermSize=64M -XX:MaxNewSize=512m -XX:MaxPermSize=128m
-Xms java虚拟机初始化时的最小内存(java Heap初始大小。 默认是物理内存的1/64。);
-Xmx java虚拟机可使用的最大内存(java heap最大值。建议均设为物理内存的一半。不可超过物理内存。);
-XX: PermSize 内存永久保留区域(设定内存的永久保存区初始大小。缺省值为64M。);
-XX:MaxPermSize 内存最大永久保留区域(设定内存的永久保存区最大 大小。缺省值为64M。);
2、tomcat线程优化(server.xml)
<Connector port="8080" protocol="HTTP/1.1" maxThreads="600" minSpareThreads="100" maxSpareThreads="500" acceptCount="700"
connectionTimeout="20000" redirectPort="8443" />
说明:
maxThreads="600" ///最大线程数
minSpareThreads="100"///初始化时创建的线程数
maxSpareThreads="500"///一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。
cceptCount="700"//指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理
线程池:
由于tomcat有多个connector,所以tomcat线程的配置,又支持多个connector共享一个线程池。
首先。打开/conf/server.xml,增加
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="500" minSpareThreads="20" maxIdleTime="60000" />
然后,修改<Connector ...>节点,增加executor属性,executor设置为线程池的名字:
<Connector executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1" maxThreads="600" minSpareThreads="100" maxSpareThreads="500" acceptCount="700" connectionTimeout="20000" redirectPort="8443" />
备注:当设置环境变量值CATALINA_OPTS时,可不用进行内存优化,直接引用设置值;
如:-Xms1024m -Xmx1024m -XX:PermSize=256M -XX:MaxPermSize=512M