不一样的思想~~ http://shop34712791.taobao.com MSN:wins0910@hotmail.com

tomcat性能调优(一)~

上一篇 / 下一篇  2007-08-02 09:14:13 / 个人分类:性能测试

当应用程序需要的内存超出堆的最大值时虚拟机就会提示内存溢出,并且导致应用服务崩溃。因此一般建议堆的最大值设置为可用内存的最大值的80%。

一次完全的垃圾收集应该不超过 3-5 秒。

你应该使用物理内存的 80% 作为堆大小。

虽然tomcat也可以作web服务器,但其处理静态html的速度比不上apache,且其作为web服务器的功能远不如apache,因此我们想把apache和tomcat集成起来,将html与jsp的功能部分进行明确分工,让tomcat只处理jsp部分,其它的由apache,IIS等这些web服务器处理,由此大大节省了tomcat有限的工作"线程"。

负载均衡实现的方式大概有四种:
    第一是通过DNS,但只能实现简单的轮流分配,不能处理故障,
    第二如果是基于MS IIS,Windows 2003 server本身就带了负载均衡服务,
    第三是硬件方式,通过交换机的功能或专门的负载均衡设备可以实现,
    第四种是软件方式,通过一台负载均衡服务器进行,上面安装软件。使用Apache Httpd Server做负载平衡器,Tomcat集群节点使用Tomcat就可以做到以上第四种方式。这种方式比较灵活,成本相对也较低。另外一个很大的优点就是可以根据应用的情况和服务器的情况采取一些策略。

Tomcat4中可以通过修改minProcessors和maxProcessors的值来控制线程数。这些值在安装后就已经设定为默认值并且是足够使用的,但是随着站点的扩容而改大这些值。minProcessors服务器启动时创建的处理请求的线程数应该足够处理一个小量的负载。也就是说,如果一天内每秒仅发生5次单击事件,并且每个请求任务处理需要1秒钟,那么预先设置线程数为5就足够了。但在你的站点访问量较大时就需要设置更大的线程数,指定为参数maxProcessors的值。maxProcessors的值也是有上限的,应防止流量不可控制(或者恶意的服务攻击),从而导致超出了虚拟机使用内存的大小。如果要加大并发连接数,应同时加大这两个参数。web server允许的最大连接数还受制于操作系统的内核参数设置,通常Windows是2000个左右,Linux是1000个左右。

maxThreads
 Tomcat使用线程来处理接收的每个请求。这个值表示Tomcat可创建的最大的线程数。
 
acceptCount//等待队列
 指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理。
 
connnectionTimeout
 网络连接超时,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为30000毫秒。
 
minSpareThreads//线程递增最小范围
 如果当前没有空闲线程,且没有超过maxThreads,一次性创建的空闲线程数量。Tomcat初始化时创建的线程数量也由此值设置。
 
maxSpareThreads //线程递增最大范围
 一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。

线程数可以大致上用 "同时在线人数*每秒用户操作次数*系统平均操作时间" 来计算。

理解:tomcat在2个条件(没有空闲线程也没有超出maxthreads)下一次创建的空闲线程数量。
      TOMCAT需要启动一些线程来处理请求,就算没有请求,这些线程也不关闭(如果线程数量没有超过maxThreads)
      如果线程不够的话就要增加,但是每次增加不是增加一个而是一批,一批数量就是minSpareThreads到maxSpareThreads之间的取值。
   当仍没有超出maxThreads,且已经达到maxSpareThreads上限的时候(当所有可以使用的处理请求的线程数都被使用时), acceptCount取值为:可以放到处理队列中的请求数,如100。

  最好的方式是多设置几次并且进行测试,观察响应时间和内存使用情况。在不同的机器、操作系统或虚拟机组合的情况下可能会不同,而且并不是所有人的web站点的流量都是一样的,因此没有一刀切的方案来确定线程数的值。

 

 

 


TAG: 性能测试

 

评分:0

我来说两句

Open Toolbar