性能调优:tomcat

Tomcat

介绍

Tomcat 服务器是一个免费的开放源代码的轻量级 Web 应用服务器,如apache处理静态HTML能力 突出不同,tomcat处理动态HTML能力相当强大, 因此一般项目都是部署apache+tomcat,由 apache处理程序的静态文件,tomcat处理JSP 页面和Servlet。

Tomcat目录结构

/bin :存放windows或Linux平台
/conf:存放Tomcat服务器的各种全局配置文件,其中最重要的是server.xml和web.xm
/doc:存放Tomcat文档
/server:包含三个子目录:classes、lib和webapps
/server/lib:存放Tomcat服务器所需的各种JAR文件
/server/webapps:存放Tomcat自带的两个WEB应用admin应用和 manager应用
/common/lib:存放Tomcat服务器以及所有web应用都可以访问的jar文件
/shared/lib:存放所有web应用都可以访问的jar文件(但是不能被Tomcat服务器访问)
/logs:存放Tomcat执行时的日志文件
/src:存放Tomcat的源代码
/webapps:Tomcat的主要Web发布目录,默认情况下把Web应用文件放于此目录
/work:存放JSP编译后产生的class文件

Tomcat + apache集群

虽然Tomcat也可以作web服务器,但其处理静态html的速度比不上 Apache,且其作为web服务器的功能远不如Apache,因此把 Apache和Tomcat集成起来,将html和Jsp的功能部分进行明确分工, 让Tomcat只处理Jsp部分,其他的由Apache,IIS等web服务器去处 理,由此大大提高Tomcat的运行效率.
对于并发要求很高的系统,我们需要采取负载均衡的方式来分担Tomcat服务器的压力。推荐使用 Apache+Tomcat集群来实现负载均衡。
采用Tomcat集群可以最大程度的发挥服务器的性能,可以在配置较高的服务器上部署多个 Tomcat,也可以在多台服务器上分别部署Tomcat,Apache和Tomcat整合的方式还是JK方 式。
经过验证,系统对大用户量使用的响应方面:Apache+3Tomccat集群> Apache+2Tomcat集群 > Apache集成Tomcat > 单个Tomcat。
并且采用Apache+多 Tomcat集群的部署方式时,如果一个Tomcat出现宕机,系统可以继续使用,所以在硬件系 统性能足够优越的情况下,需要尽量发挥软件的性能,可以采用增加Tomcat集群的方式。
Apache+Tomcat集群的方式使用到得配置文件有httpd.conf、mod_jk.conf、workers.properties。其中mod_jk.conf是对JK信息的配置,包括JK的路径等, workers.properties配置文件是对Tomcat服务器的连接定义文件。 Apache需要调整运行参数,这样才能构建一个适合相应网络环境的web服务

Tomcat调优

  1. apache + tomcat集群:优化配置
  • 设置MPM(Multi Processing Modules多道处理模块)
    ThreadPerChild, 这个参数用于设置每个进程的线程数,在Windows环境下默认值是64,最大值是 1920,建议设置为100-500之间,服务器性能高的话值大一些,反之小一些。 MaxRequestPerChild表示每个子进程能够处理的最大请求数。这个参数的值更 大程度上取决于服务器的内存,如果内存比较大的话可以设置为很大的参数,否则设置一个较小的值,建议值是3000
  • 关闭DNS和名字解析 HostnameLookups off
  • 打开UseCanonicalName模块 UseCanonicalName on
  • 关闭多余模块 一般来说,不需要加载的模块有,mod_include.so、 mod_autoindex.so、mod_access.so、mod_auth.so.
  • 打开KeepAlive支持
    KeepAlive on, KeepAliveTimeout 15 MaxKeepAliveRequests 1000
    根据实际经验,通过Apache和Tomcat集群的方式提高系统性能的效果十分明 显,这种方式可以最大化的利用硬件资源,通过多个Tomcat的处理来分担单 Tomcat时的压力。
  1. JVM:Linux启动参数
  • export JAVA_OPTS="-server -Xms1400M -Xmx1400M -Xss512k -XX:+AggressiveOpts -XX:+UseBiasedLocking - XX:PermSize=128M -XX:MaxPermSize=256M - XX:+DisableExplicitGC -XX:MaxTenuringThreshold=31 - XX:+UseConcMarkSweepGC -XX:+UseParNewGC - XX:+CMSParallelRemarkEnabled - XX:+UseCMSCompactAtFullCollection - XX:LargePageSizeInBytes=128m - XX:+UseFastAccessorMethods - XX:+UseCMSInitiatingOccupancyOnly - Djava.awt.headless=true “
  1. 禁用DNS查询
  • 修改server.xml文件中的 enableLookups参数值改为false:enableLookups=“false”
    当web应用程序向要记录客户端的信息时,它也会记录客户端的IP地 址或者通过域名服务器查找机器名转换为IP地址。DNS查询需要占用 网络,并且包括可能从很多很远的服务器或者不起作用的服务器上去 获取对应的IP的过程,这样会消耗一定的时间。为了消除DNS查询对 性能的影响我们可以关闭DNS查询。
  1. 容器优化
  • 通过应用程序的连接器(Connector)进行性能控制的的参数是创建的处理请求的线程数。 Tomcat使用线程池加速响应速度来处理请求。在Java中线程是程序运行时的路径,是在一 个程序中与其它控制线程无关的、能够独立运行的代码段。它们共享相同的地址空间。多线 程帮助程序员写出CPU最大利用率的高效程序,使空闲时间保持最低,从而接受更多的请求。
    maxThreads :Tomcat使用线程来处理接收的每个请求。这个值表示Tomcat可创建的最 大的线程数
    acceptCount :指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列 中的请求数,超过这个数的请求将不予处理
    connnectionTimeout :网络连接超时,单位:毫秒。设置为0表示永不超时,这样设置有 隐患的。通常可设置为30000毫秒
    minSpareThreads :Tomcat初始化时创建的线程数
    maxSpareThreads : 一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程
    最好的方式是多设置几次并且进行测试,观察响应时间和内存使用情况。在不同的机器、 操作系统或虚拟机组合的情况下可能会不同,而且并不是所有人的web站点的流量都是一样 的,因此没有一刀切的方案来确定线程数的值。

  • Tomcat中使用APR库,其实就是在Tomcat中使用JNI的方式来读取文件以及 进行网络传输。可以大大提升Tomcat对静态文件的处理性能,同时如果你使 用了HTTPS方式传输的话,也可以提升SSL的处理性能。
    一般在Windows下,可以直接下载编译好的二进制版本的dll库文件来使 Tomcat启用APR,一般建议拷贝库文件tcnative-1.dll到Tomcat的bin目录 下。
    而在Linux下,可以直接解压和安装bin目录下的tomcat_native.tar.gz 文件,编译之前要确保apr库已经安装。
    怎么才能判断Tomcat是否已经启用了APR库呢?方法是通过看Tomcat的启 动日志:
    如果没有启用APR,则启动日志一般有这么一条: org.apache.coyote.http11.Http11Protocol start
    如果启用了APR,则这条日志就会变成: org.apache.coyote.http11.Http11AprProtocol start tcnative-1.dll

  • HTTP 压缩可以大大提高浏览网站的速度,它的原理是,在客户端请 求网页后,从服务器端将网页文件压缩,再下载到客户端,由客户端 的浏览器负责解压缩并浏览。相对 于普通的浏览过程 HTML,CSS,Javascript , Text ,它可以节省40%左右的流量。更为重 要的是,它可以对动态生成的,包括CGI、PHP , JSP , ASP , Servlet,SHTML等输出的网页也能进行压缩,压缩效率惊人。
    compression=“on” :打开压缩功能
    compressionMinSize=“2048” :启用压缩的输出内容大小,这里面 默认为2KB
    noCompressionUserAgents=“gozilla, traviata” :对于以下的浏览 器,不启用压缩
    compressableMimeType=“text/html,text/xml” :压缩类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值