TOMCAT 调优学习

来源:互联网 发布:音乐剪辑软件手机 编辑:程序博客网 时间:2024/05/16 04:38

 1.修改堆大小  

    Windows下,在文件{tomcat_home}/bin/catalina.batUnix下,在文件{tomcat_home}/bin/catalina.sh的前面,增加如下设置:

  JAVA_OPTS='-Xms【初始化内存大小】 -Xmx【可以使用的最大内存,建议为物理内存的80%】'

 

   因为如果虚拟机启动时设置使用的内存比较小而在这种情况下有许多对象进行初始化,虚拟机就必须重复地增加内存来满足使用

   所以一般情况下设置-Xms【初始化内存大小】= -Xmx【可以使用的最大内存】=物理内存的80%

 

2.Tomcatapache web服务器整合使用

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

 

3.负载均衡

  通过一台负载均衡服务器进行,上面安装软件Apache Httpd Server做负载平衡器,

并对外提供一个统一的地址。当一个服务请求被发至该集群时,根据一定规则选择一台服务器,并将服务转定向给该服务器承担,即将负载进行均衡分摊。

Tomcat集群节点就使用Tomcat

 

4.禁用DNS查询

  当web应用程序向要记录客户端的信息时,它也会记录客户端的IP地址或者通过域名服务器查找机器名转换为IP地址。DNS查询需要占用网络,并且包括可能从很多很远的服务器或者不起作用的服务器上去获取对应的IP的过程,这样会消耗一定的时间。为了消除DNS查询对性能的影响我们可以关闭DNS查询,方式是修改server.xml文件中的enableLookups参数值:FALSE 

5.调整线程数

通过修改server.xml中的下列参数

maxThreads
 Tomcat使用线程来处理接收的每个请求。这个值表示Tomcat可创建的最大的线程数。
acceptCount
 指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理。
connnectionTimeout
 网络连接超时,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为30000毫秒。
minSpareThreads
 Tomcat初始化时创建的线程数。 
maxSpareThreads
 一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。

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

vi /etc/security/limits.conf
追加
* soft nofile 32768
* hard nofile 32768
保存,重启系统,就生效了。
说明:
* 对所有用户有效
soft 可以超过的配置数
hard 最大不能超过的配置数
nofile 对描述符的配置

6.防止恶意攻击

  Tomcat提供了两个参数供你配置:RemoteHostValve 和RemoteAddrValve。通过配置这两个参数,可以让你过滤来自请求的主机或IP地址,并允许或拒绝哪些主机/IP。与之类似的,在Apache的httpd文件里有对每个目录的允许/拒绝指定。

7.Tomcat容量计划

以下介绍针对Tomcat做容量计划的步骤:

  1) 量化负载。如果站点已经建立并运行,可以使用前面介绍的工具模仿用户访问,确定资源的需求量。

  2) 针对测试结果或测试过程中进行分析。需要知道那些请求造成了负载过重或者使用过多的资源,并与其它请求做比较,这样就确定了系统的瓶颈所在。例如:如果servlet在查询数据库的步骤上耗用较长的时间,那么就需要考虑使用缓冲池来降低响应时间。

  3) 确定性能最低标准。例如,你不想让用户花20秒来等待结果页面的返回,也就是说甚至在达到访问量的极限时,用户等待的时间也不能超过20秒种(从点击链接到看到返第一条返回数据)。这个时间中包含了数据库查询时间和文件访问时间。同类产品性能在不同的公司可能有不同的标准,一般最好采取同行中的最低标准或对这个标准做出评估。

  4) 确定如何合理使用底层资源,并逐一进行测试。底层资源包括CPU、内存、存储器、带宽、操作系统、JVM等等。在各种生产环境上都按顺序进行部署和测试,观察是否符合需求。在测试Tomcat时尽量多采用几种JVM,并且调整JVM使用内存和Tomcat线程池的大小进行测试。同时为了达到资源充分合理稳定地使用的效果,还需针对测试过程中出现的硬件系统瓶颈进行处理确定合理的资源配置。这个过程最为复杂,而且一般由于没有可参考的值所以只能靠理论推断和经验总结。

 


 

  1) Apache 2.x + Tomcat 4.x做负载均衡,描述了如何利用jk配置集群的负载均衡。
  http://raibledesigns.com/tomcat/index.html

  2) 容量计划的制定,收集了许多有关制定web站点容量计划的例子:
  http://www.capacityplanning.com/

  3) 评测Tomcat5负载平衡与集群,
  http://www.javaresearch.org/article/showarticle.jsp?column=556&thread=19777

  4) Apache与Tomcat的安装与整合之整合篇
  http://www.javaresearch.org/article/showarticle.jsp?column=23&thread=18139

  5) 性能测试工具之研究,介绍了性能测试工具的原理与思路
  http://www.51testing.com/emagzine/No2_2.htm

  6) Java的内存泄漏
  http://www.matrix.org.cn/resource/article/409.html

  7) Web服务器和应用程序服务器有什么区别?
  http://www.matrix.org.cn/resource/article/1429.html

  8) 详细讲解性能中数据库集群的问题
  http://www.theserverside.com/articles/article.tss?l=DB_Break


 

 

0 0