java JVM tomcat 优化

来源:互联网 发布:淘宝店铺如何设置网址 编辑:程序博客网 时间:2024/05/22 17:22
还有篇终极优化的。。。
http://wenku.baidu.com/view/e9f78f84ec3a87c24028c4f9.html

1、内存设置
Windows环境下修改“%TOMCAT_HOME%\bin\catalina.bat”文件,
在文件开头增加如下设置:set JAVA_OPTS=-Xms256m -Xmx512m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m

-Xms设置初始化内存大小
-Xmx设置可以使用的最大内存
-Xmn:内存最小值,-Xmn128-256m就够了
JVM初始分配的内存由-Xms指定,默认是物理内存的1/64;
JVM最大分配的内存由-Xmx指定,默认是物理内存的1/4。
默认空余堆内存小于 40%时,JVM就会增大堆直到-Xmx的最大限制;
空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。
因此服务器一般设置-Xms、 -Xmx相等以避免在每次GC 后调整堆的大小。
在较大型的应用项目中,默认的内存是不够的,有可能导致系统无法运行。
常见的问题是报Tomcat内存溢出错误“java.lang.OutOfMemoryError: Java heap space”,从而导致客户端显示500错误。

Linux环境下修改“%TOMCAT_HOME%\bin\catalina.sh”文件,在文件开头增加如下设置:JAVA_OPTS=’-Xms256m -Xmx512m’


2.并发数设置

默认的tomcat配置,并发测试时,可能30个USER上去就当机了。
添加
     <Connector port="80" protocol="HTTP/1.1"
             maxThreads="600"
             minSpareThreads="100"
             maxSpareThreads="500"
             acceptCount="700"
            connectionTimeout="20000"
            redirectPort="8443" />
说明
       maxThreads="600" ///最大线程数
       minSpareThreads="100"///初始化时创建的线程数
       maxSpareThreads="500"///一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。
       acceptCount="700"//指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理

      maxthread太多,导致切换过多,性能下降严重。这个数量应该是你单个机器的承载能力, 压力测试下得出的结果。 不可任意加大。一般情况下, 256-512个已经非常高的数值了。