如何修正配置呢,在/tomcat的/bin/下面有个脚本文件catailna.sh。 如果 windows 是bat设置tomcat的利用内存,实在便是设置jvm的利用参数。
一.Tomcat内存优化
Tomcat内存优化紧张是对 tomcat 启动参数优化,我们可以在 tomcat 的启动脚本 catalina.sh 中设置 JAVA_OPTS 参数。
1.JAVA_OPTS参数解释
-server 启用jdk 的 server 版; -Xms java虚拟机初始化时的最小内存; -Xmx java虚拟机可利用的最大内存; -XX:PermSize 内存永久保留区域 -XX:MaxPermSize 内存最大永久保留区域设置Tomcat启动的初始内存,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。可以利用JVM供应的-Xmn -Xms -Xmx等选项,要加“m”解释是MB,否则便是KB了,在启动tomcat时会报内存不敷。
-Xms:初始值 【初始化内存大小】 -Xmx:最大值 【可以利用的最大内存】 -Xmn:最小值 JVM堆的设置是指java程序运行过程中JVM可以调配利用的内存空间的设置.JVM在启动的时候会自动设置Heap size的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。可以利用JVM供应的-Xmn -Xms -Xmx等选项可进行设置。Heap size 的大小是Young Generation 和Tenured Generaion 之和。提示:在JVM中如果98%的韶光是用于GC且可用的Heap size 不敷2%的时候将抛出此非常信息。
提示:Heap Size 最大不要超过可用物理内存的80%,一样平常的要将-Xms和-Xmx选项设置为相同,而-Xmn为1/4的-Xmx值。 这两个值的大小一样平常根据须要进行设置。初始化堆的大小实行了虚拟机在启动时向系统申请的内存的大小。一样平常而言,这个参数不主要。但是有的运用 程序在大负载的情形下会急剧地占用更多的内存,此时这个参数便是显得非常主要,如果虚拟机启动时设置利用的内存比较小而在这种情形下有许多工具进行初始 化,虚拟机就必须重复地增加内存来知足利用。由于这种缘故原由,我们一样平常把-Xms和-Xmx设为一样大,而堆的最大值受限于系统利用的物理内存。一样平常利用数 据量较大的运用程序会利用持久工具,内存利用有可能迅速地增长。当运用程序须要的内存超出堆的最大值时虚拟机就会提示内存溢出,并且导致运用做事崩溃。因 此一样平常建议堆的最大值设置为可用内存的最大值的80%。
如果系统花费很多的韶光网络垃圾,请减小堆大小。一次完备的垃圾网络该当不超过 3-5 秒。如果垃圾网络成为瓶颈,那么须要指定代的大小,检讨垃圾网络的详细输出,研究 垃圾网络参数对性能的影响。一样平常说来,你该当利用物理内存的 80% 作为堆大小。当增加处理器时,记得增加内存,由于分配可以并行进行,而垃圾网络不是并行的。在重启你的Tomcat做事器之后,这些配置的变动才会有效。Windows在文件{tomcathome}/bin/catalina.bat,Unix在文件{tomcathome}/bin/catalina.sh的前面,增加如下设置:
<span style=\公众color: rgb(51, 51, 51); font-family: 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 微软雅黑, STHeiti, 'WenQuanYi Micro Hei', SimSun, sans-serif; line-height: 13.2px;\公众>做事器参数配置:</span>tomcat默认: -Xms1024m -Xmx1024m -Xss1024K -XX:PermSize=128m -XX:MaxPermSize=256mJava_OPTS参数
JAVA_OPTS=\"大众-Djava.awt.headless=true -Dfile.encoding=UTF-8-server -Xms2048m -Xmx2048m-XX:NewSize=512m -XX:MaxNewSize=512m -XX:PermSize=512m-XX:MaxPermSize=512m -XX:+DisableExplicitGC\"大众配置完成后可重启Tomcat ,通过以下命令进行查看配置是否生效:
1.首先查看Tomcat 进程号:
ps -ef | grep tomcat
我们可以看到Tomcat 进程号是 9217
1.查看是否配置生效:
sudo jmap –heap 9217
我们可以看到MaxHeapSize 等参数已经生效。
二.Tomcat并发优化
1.Tomcat连接干系参数
在Tomcat配置文件conf下面 server.xml 中的配置中和连接数干系的参数有:
minProcessors:最小空闲连接线程数,用于提高系统处理性能,默认值为10maxProcessors:最大连接线程数,即:并发处理的最大要求数,默认值为75acceptCount:许可的最大连接数,应大于即是maxProcessors,默认值为100enableLookups:是否反查域名,取值为:true或false。为了提高处理能力,应设置为falseconnectionTimeout:网络连接超时,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。常日可设置为30000毫秒。1.参数解释
默认的tomcat 参数:
<Connector port=“8080\公众 protocol=\"大众HTTP/1.1\"大众 connectionTimeout=\"大众20000\"大众 redirectPort=\"大众8443\"大众 />修正:
<Connector port=“8080\公众 protocol=\"大众org.apache.coyote.http11.Http11NioProtocol\公众 maxThreads=\"大众600\"大众 minSpareThreads=\公众100\"大众 maxSpareThreads=\"大众500\公众 acceptCount=\"大众700\公众 connectionTimeout=\公众20000\公众 redirectPort=\"大众8443\公众 />这样设置往后,基本上没有再当机过。
protocol=\"大众org.apache.coyote.http11.Http11NioProtocol\公众 ///利用java的异步io照顾护士技能,no blocking IOmaxThreads=“600\公众 表示最多同时处理600个连接 ///最大线程数minSpareThreads=“100\"大众 表示纵然没有人利用也开这么多空线程等待 ///初始化时创建的线程数maxSpareThreads=“500\"大众 表示如果最多可以空500个线程,例如某时候有505人访问,之后没有人访问了,则tomcat不会保留505个空线程,而是关闭505个空的。 ///一旦创建的线程超过这个值,Tomcat就会关闭不再须要的socket线程。acceptCount=\公众700\"大众//指定当所有可以利用的处理要求的线程数都被利用时,可以放到处理行列步队中的要求数,超过这个数的要求将不予处理这里是http connector的优化,如果利用apache和tomcat做集群的负载均衡,并且利用ajp协议做apache和tomcat的协议转发,那么还须要优化ajp connector。
<Connector port=\公众8009\"大众 protocol=\"大众AJP/1.3\公众 maxThreads=\"大众600\公众 minSpareThreads=\公众100\"大众 maxSpareThreads=\"大众500\"大众 acceptCount=\公众700\"大众 connectionTimeout=\"大众20000\"大众 redirectPort=\"大众8443\"大众 />
办理常碰着的一些报错
一、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”文件,在文件开头增加如下设置:JAVA_OPTS=-Xms2048m -Xmx2048m
Linux环境下修正
“%TOMCAT_HOME%\bin\catalina.sh”文件,在文件开头增加如下设置:JAVA_OPTS=-Xms2048m -Xmx2048m
个中,-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
三、查看Tomcat的JVM内存
Tomcat6中没有设置任何默认用户,因而须要手动往Tomcat6的conf文件夹下的tomcat-users.xml文件中添加用户。 如:<role rolename=\公众manager\"大众/> <user username=\公众tomcat\"大众 password=\公众tomcat\"大众 roles=\公众manager\公众/>注:添加完须要重启Tomcat6。
访问http://localhost:8080/manager/status,输入上面添加的用户名和密码。然后在如下面的JVM下可以看到内存的利用情形。