`
szlzhm
  • 浏览: 15817 次
社区版块
存档分类
最新评论

基于tomcat的网站性能调优

阅读更多
  前些日子系统上线,是互联网网站,后台使用tomcat,上线前进行了性能压力测试,期间发现不少问题,通过大家的努力,解决了问题。
   我们团队以前没有这方面的经验,尤其客户提供的硬件条件非常的好,以为能够达到期望结果,后来性能测试证明是错误的。这也是开始信息化系统开发到web网站开发系统设计师常常犯的错误。
   架构: 我们的网站是apache+tomcat+DB的来实现的。其中DB使用Oracle10G,使用Oracle的全文搜索处理查询,HP小型机。
   运行环境:RED hat 企业版4.0 JDK5.0 tomcat 5

    测第一轮压力测试下来,系统只能支持300个并发,响应时间900毫秒以上。系统内存、cpu占用率很低,数据库的内存、cpu消耗很低。这肯定不是用户期望的结果,公司系统设计期望的结果。如是开始找原因。
     首先从apache接入参数(如使用work工作模式、调整最大连接数、keepalive等)、应用层tomcat的系统参数(请求处理线程数等)、数据库参数调整,发现没有任何作用,系统仍然顽固的在300个并发左右,响应时间没有多少变化。问题应该不在系统参数上。因此需要从其他角度着手。
     从现象来看,系统一定在哪个地方hang住了。如是找到sar等linux/unix系统命令查看系统资源消耗情况。发现数据库系统的IO消耗非常大,导致时间延迟非常大。DBA过来,将相关表装载并驻留内存中。系统有所改善,提高10%左右,但是并发不去。系统IO开销还是很大。DBA反馈信息是系统的查询量太大,Oracle的全文搜索也支持不了这么大请求。应用层必须要优化。
    因此建议上memcached,将搜索的结果和计算处理结果缓存起来,降低DB的压力。
   
    memcached版本上线后,系统响应时间和支持的并发书非常显著的提高,搜索达到几毫秒左右时间就可以完成,并发达到2000以上,但是继续增加请求个数,出现超时或者连接不上服务器的情况。但是应用服务器和接入服务器的开销增加,但是消耗没有到极限。但是凭借经验,我们的接入服务器和应用服务器能够支持比这个更大的处理能力。因此我们必须要找到另外的优化方案。
   
    进入linux控制台,使用ps  -ef |grep http | wc -l 一看吓一跳,apache进程有上千个,达到了apache中我们配置的参数的最大数。我们增大这个参数,apache进程就增加而增加,调整tomcat中请求处理线程数,并发能力没有明显改观。说明apache和tomcat已经达到自己处理能力的极限,要增加cpu和内存消耗通常一个办法就是再部署一套tomcat来消耗系统资源。但是这不是我们的首选,我们还有可以选择的手段。
    如是我们打开JConsole,进入tomcat的JVM,看看里面在发生什么现象。一看还是吓一跳。tomcat中有上千个请求处理线程都在跑。维护这么多线程,JVM进程是一个很吃力的事情,JVM自己管理的消耗很大,没有多余的精力处理应用。再看看有没有内存使用不当的问题导致杜塞,发现内存垃圾收集器处理正常。还有就是有没有串行处理代码,损害了java请求并行处理能力的问题存在,没有。那么问题出在哪里?
    找哇找哇找。在tomcat文档中找到apache apr的东东,可以提高系统的IO能力。从提升系统性能。APR提供了异步IO、共享内存、sendfile等linux操作系统中资源来优化tomcat这种java应用程序的IO能力。tomcat5.0使用普通IO能力,没有使用到操作系统的异步IO能力。如实决定使用apr进行优化。
    经过一些折腾后,系统启动起来,压力加上去了。发现并发数没有明显改善,响应能力也没有非常明显的改善。但是CPU和内存消耗下降明显。进入linux控制台,发现apache的进程数显著下降,下降到100个以下。tomcat的线程数也下降到200以下。但是可以支持的请求个数增加了,以前发生的超时问题没有了。说明我们找对路子了。

   经过后来继续加压,直到加压主机自身资源消耗殆尽。系统的并发能力提高了10%到20%左右,但是支持的链接数翻了几番。apache进程数没有显著增加,tomcat的进程数没有显著增加。可见APR异步IO的能力能够大大提高系统整体性能,降低系统消耗。

  
  
    
   
    
  
  

  
分享到:
评论

相关推荐

    Tomcat优化-Tomcat 的性能调优的原理和方法

    本文旨在介绍Tomcat性能调优的基本原理与具体实施方法,帮助技术人员更好地理解和优化Tomcat,提升其在各种应用场景下的性能表现。 #### 二、调优分类 由于Tomcat的运行高度依赖于Java虚拟机(JVM),我们可以将其...

    使用visualvm工具进行tomcat性能调优和性能监控.docx

    使用 VisualVM 工具进行 Tomcat 性能调优和性能监控 本文主要介绍了如何使用 VisualVM 工具来进行 Tomcat 的性能调优和性能监控。下面将详细介绍相关知识点: 一、JDK 内存优化 在 Tomcat 中,默认的堆大小为 128...

    Tomcat实战-调优方案.docx

    首先,**服务器资源**是影响Tomcat性能的基础。CPU、内存和硬盘性能直接决定了Tomcat处理请求的能力。强大的服务器硬件配置可以显著提升Tomcat的性能,但成本较高,通常在必要时才会考虑。更常见的做法是通过优化...

    一种正规的性能调优方法:基于等待的调优

    【性能调优】是软件开发领域中的重要环节,旨在提升应用程序的效率,减少资源消耗,改善用户体验。传统的性能调优往往依赖于经验和技术直觉,但这种方法存在一定的局限性,容易变得主观且难以量化效果。基于等待的...

    性能调优 海量并发 系统架构

    J2EE性能调优 Jboss的优化配置 Memcached分布式缓存 Nginx+Tomcat 动静分离 Nginx+tomcat集群Memcached+Session复制 高性能高并发服务器架构 基于nginx的tomcat负载均衡和集群 实现多服务器负载均衡 系统性能优化 ...

    tomcat-jvm调优

    对于基于Java的应用程序而言,Tomcat作为最常见的Web容器之一,其运行时的性能表现直接影响着整个系统的稳定性和响应速度。本文将围绕“Tomcat-JVM参数调优”这一主题,详细介绍相关的配置方法及注意事项,尤其关注...

    WEB服务器性能调优

    对于轻量级服务器Tomcat,`Tomcat性能调优.doc`会提供针对它的特定调优技巧,这可能涉及调整Tomcat的线程池、JVM配置、日志设置以及减少上下文启动时间等方面。 `自动执行 Java 性能优化.doc`可能涵盖了一些自动化...

    tomcat 性能检测软件

    6. **性能优化建议**:可能包含基于LambdaProbe提供的数据进行性能调优的方法和策略。 7. **故障排查指南**:提供一些常见问题的解决方案,帮助用户解决在使用LambdaProbe过程中遇到的问题。 另一个文件“probe”...

    应用服务架构及性能调优详解

    此外,文中还详细阐述了应用服务器的关键组件如类加载器(ClassLoader)的作用以及基于JMX的技术特点,在此基础上进一步解释了应用服务器性能调优的重要性和多种优化方式。 适合人群:从事Java应用开发运维的专业人士...

    Java应用性能监控和调优(思维导图)

    将视频整合成为思维导图,看着方便,节省时间。 内容包括:(1)基于JDK命令后工具的监控(2)基于Btrace的监控调试...(4)java代码层优化(5)JVM层GC调优(6)基于JVisualVM的可视化监控(7)tomcat性能监控和调优

    Java生产环境下性能监控与调优详解

    基于JDK命令行的监控 基于JVisualVM的可视化监控 基于Btrace的监控调试 Tomcat性能监控与调优 Nginx性能监控与调优 JVM层GC调优 JVM字节码与java代码层调优

    通向架构师的道路(第三天)之apache性能调优

    【Apache性能调优】 在通往架构师的道路上,性能优化是一个至关重要的环节,尤其是在Web服务领域。Apache作为广泛应用的Web服务器,其性能调优对于整体系统性能有着显著的影响。在第三天的学习中,我们将深入探讨...

    tomcat performance tuning 性能调整

    9. **选择适合的Tomcat版本**:尽管演示基于Tomcat 6,但很多调优策略适用于早期版本。确保使用较新的Java SE版本,因为它们通常包含性能改进和新特性。 10. **JMX与MBeans**:JMX是一种管理Java应用的标准方法,而...

    通往架构师之路(全27)

    4 Tomcat性能调优 让小猫飞奔 5 Tomcat集群 群猫乱舞 6 漫谈基于数据库的权限系统设计 7 漫谈使用ThreadLocal改进你的层次划分 8 weblogic与apache的整合与调优 9 weblogic的集群与配置 10 Axis2 Web Service 一 ...

    apr库(tomcat优化)

    说明下关于TOMCAT调优一种建议 1 Connector介绍  1.1 Connector的种类  Tomcat源码中与connector相关的类位于org.apache.coyote包中,Connector分为以下几类:  Http Connector, 基于HTTP协议,负责建立HTTP连接...

    report net性能调优

    ### Cognos ReportNet 性能调优方案详解 #### 第一章 软件环境调优 在Cognos ReportNet系统中进行性能优化,首先需关注的是软件环境的配置,包括HTTP服务器(Web服务器)、应用服务器以及Cognos ReportNet自身的...

    tomcat7调优

    正确配置JVM参数对优化Tomcat性能至关重要。以下是一些常见的JVM调优参数: 1. **堆大小**:`-Xms`和`-Xmx`用于设置JVM初始和最大堆内存。例如,如果服务器有16GB RAM,可以设置为`-Xms4G -Xmx8G`,确保有足够的...

    性能测试调优

    ### 性能测试调优知识点概述 #### 一、操作系统性能分析基础 ##### 1.1 操作系统性能分析介绍 - **操作系统角色**: 操作系统作为计算机硬件和软件之间的桥梁,负责管理计算机系统的硬件(如CPU、内存、磁盘等)和...

    TOMCAT优化

    #### 二、Tomcat性能调优概览 Tomcat的性能调优主要包括两大类:外部环境调优与自身调优。外部环境调优关注于操作系统的参数调整和Java虚拟机(JVM)的配置;而自身调优则侧重于Tomcat本身的配置和优化策略。 #### ...

Global site tag (gtag.js) - Google Analytics