Tomcat的优化经验

Tomcat作为web服务器,它的性能直接关系到用户体验,它的优化措施有:

1. 去掉对web.xml的监视。

    在context.xml中增加<WatchedResource>WEB-INF/web.xml</WatchedResource>,此时在eclipse中修改了web.xml后将自动更新到Tomcat服务器中,不需要重启服务器。

2. 把jsp提前编辑成Servlet。

    在服务器下运行时,把jsp都打开一遍。由于jsp和Servlet的编译时期不一样。使用eclipse等工具创建的Servlet在部署在Tomcat时就已经编译成.class文件了,而jsp被部署到Tomcat时还没有被编译。当Tomcat启动,第一次访问jsp页面时,jsp才会编译成Servlet,再被编译成.class文件。

3. 在富余物理内存的情况下,加大Tomcat使用的jvm的内存。

    通过配置Tomcat的配置文件(Windows下的catalina.bat或Linux下的catalina.sh),在前面增加设JAVA_OPTS=”‘$JAVA_OPTS”

-Xms[初始化内存大小] -Xmx[可以使用的最大内存] 
或 
设置环境变量:export JAVA_OPTS=””$JAVA_OPTS” -Xms[初始化内存大小] -Xmx[可以使用的最大内存]” 
一般说来,你应该使用物理内存的 80% 作为堆大小。如果本机上有Apache服务器,可以先折算Apache需要的内存,然后修改堆大小。建议设置为70%;建议设置[[初始化内存大小]等于[可以使用的最大内存],这样可以减少平凡分配堆而降低性能。减少内存溢出的情况,同时减少频繁分配堆而降低性能,减少gc次数,服务器可以更多关注处理web请求,并尽快完成。

4. 利用缓存和压缩

    采用nginx作为缓存服务器,将图片、css、js文件都进行缓存。能有效的减少了后端Tomcat的访问。另外,为了能加快网络传输速度,开启gzip压缩也是必不可少的。但考虑到tomcat已经需要处理很多东西了,所以把这个压缩的工作就交给前端的Nginx来完成。
  除了文本可以用gzip压缩,其实很多图片也可以用图像处理工具预先进行压缩,找到一个平衡点可以让画质损失很小而文件可以减小很多。曾经我就见过一个图片从300多kb压缩到几十kb,自己几乎看不出来区别。

5. 采用集群

    采用nginx来作为请求分流的服务器,后端多个Tomcat共享session来协同工作。

6. 优化Tomcat参数

    修改conf/server.xml文件,主要是优化连接配置,关闭客户端dns查询。和连接数相关的参数有:

      maxThreads : tomcat起动的最大线程数,即同时处理的任务个数,默认值为200。

      minProcessors:最小空闲连接线程数,用于提高系统处理性能,默认值为10 。

      maxProcessors:最大连接线程数,即:并发处理的最大请求数,默认值为75 。

      acceptCount: 当tomcat起动的线程数达到最大时,接受排队的请求个数,默认值为100。

      minSpareThreads :Tomcat初始化时创建的线程数。

      maxSpareThreads :一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。

      enableLookups:是否反查域名,取值为:true或false。 缺省值为false,表示使用客户端主机名的DNS解析功能,被ServletRequest.getRemoteHost方法调用。

     connectionTimeout:网络连接超时,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为30000毫秒。

     其中和最大连接数相关的参数为maxProcessors和acceptCount。如果要加大并发连接数,应同时加大这两个参数。

    web server允许的最大连接数还受制于操作系统的内核参数设置,通常Windows是2000个左右,Linux是1000个左右。

如有不足,欢迎留言指正。望不吝赐教!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值