1、在配置的tomcate的JDk
2、在环境变量中加:JAVA_OPTS=-Xms64m -Xmx512m(最小内存,最大内存)
Tomcat调优
一、
l
通常Windows是2000个左右,Linux是1000个左右。
l
minProcessors
maxProcessors
acceptCount
connnectionTimeout 网络连接超时,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为30000毫秒。
Tomcat 5的线程数目参数修改为:
minSpareThreads
maxSpareThreads
调整该参数为最优Processors,在限制的情况下会发挥不了最大连接数目
本机TOMCAT4.1测试的时候,50个用户,在100个线程的情况是最优的,在点击数\响应时间\并发用户数都为最好
maxProcessors为50,情况会出现连接不够用的情况,为200出现内存溢出
Tomcat4中可以通过修改minProcessors和maxProcessors的值来控制线程数。这些值在安装后就已经设定为默认值并且是足够使用的,但是随着站点的扩容而改大这些值。
minProcessors服务器启动时创建的处理请求的线程数应该足够处理一个小量的负载。也就是说,如果一天内每秒仅发生5次单击事件,并且每个请求任务处理需要1秒钟,那么预先设置线程数为5就足够了。但在你的站点访问量较大时就需要设置更大的线程数,指定为参数maxProcessors的值。
maxProcessors的值也是有上限的,应防止流量不可控制(或者恶意的服务攻击),
从而导致超出了虚拟机使用内存的大小。如果要加大并发连接数,应同时加大这两个参数。
web server允许的最大连接数还受制于操作系统的内核参数设置,通常Windows是2000个左右,Linux是1000个左右。
l
-Xms JVM初始化堆的大小
-Xmx
l
catalina.bat中修改变量,JAVA_OPTS=-Xms500m-Xmx500m
l
l
l
如果堆设置较大,则GC次数变少,但每次花费较长时间,从而导致系统处理能力抖动较大;如果堆设置较小,则GC变得频繁,虽然对系统性能影响较小,但频繁的GC也会耗费系统资源
这两个值的大小一般根据需要进行设置。
初始化堆的大小执行了虚拟机在启动时向系统申请的内存的大小。
一般而言,这个参数不重要。但是有的应用程序在大负载的情况下会急剧地占用更多的内存,
此时这个参数就是显得非常重要,如果虚拟机启动时设置使用的内存比较小而在这种情况下有许多对象进行初始化,
虚拟机就必须重复地增加内存来满足使用。由于这种原因,我们一般把-Xms和-Xmx设为一样大,而堆的最大值受限于系统使用的物理内存。
一般使用数据量较大的应用程序会使用持久对象,内存使用有可能迅速地增长。
当应用程序需要的内存超出堆的最大值时虚拟机就会提示内存溢出,并且导致应用服务崩溃。因此一般建议堆的最大值设置为可用内存的最大值的80%。
由于Jvm系统垃圾收集机制的存在,在高负载情况下如果能根据系统的具体要求有效的调整最优化堆的大小,也可以起到一定优化作用。如果堆设置较大,则GC次数变少,但每次花费较长时间,从而导致系统处理能力抖动较大;如果堆设置较小,则GC变得频繁,虽然对系统性能影响较小,但频繁的GC也会耗费系统资源。
三、负载均衡
负载均衡实现的方式大概有四种:
第一是通过DNS,但只能实现简单的轮流分配,不能处理故障,
第二如果是基于MS IIS,Windows 2003 server本身就带了负载均衡服务,
第三是硬件方式,通过交换机的功能或专门的负载均衡设备可以实现,
第四种是软件方式,通过一台负载均衡服务器进行,上面安装软件。
四、
l
Jikes是性能优良的Java编译器,在jsp容器中使用Jikes替代Sun的编译器能够有效提高jsp文件的编译速度。对于Tomcat 5.5,可以参考Jasper-Howto。要注意的是Windows版本的Jikes是不支持-encoding选项的,你需要自己编译。可以参考这里。
l
Tomcat官方推荐的部署方式是使用Ant对jsp进行预编译。直接在部署时将jsp编译为servlet类,能够在运行初期时显著提高响应速度
java
调优总的思想:
2、内存不是越大越好,太小会频繁GC,太大GC一次的时间非常长
3、调整总体堆的内存,-Xms1024m
4、可以用visualGC观察,内存各个区的情况,old eden s0 s1 per区
5、可以使用工具对输出的日志进行分析,检查full gc的时间
6、检测线程死锁,可以用jconsole,检测死锁,查看死的原因和死锁的代码具体位置
7、调整操作系统的文件句柄,因为每个连接在UNIX中是当作一个文件句柄来的,如果
太少了,会出现连接拒绝的情况。ulimit –n 可以查看文件句柄数目,一般机器可以设为1024,
机器好的可以设置大一点。在xp中,则有可能限制了线程数目,所以一般用win server版的系统