美文网首页
tomcat WEB应用部署及优化

tomcat WEB应用部署及优化

作者: 黄殿玺 | 来源:发表于2019-12-26 22:06 被阅读0次

    一、部署环境

    操作系统:Windows(XP/Win7/Server 2003/Server 2008)

    JAVA运行环境:JDK 1.6(最新补丁包)

    二、系统部署

    1、JDK下载及安装

    JDK 1.6下载地址:

    http://download.oracle.com/otn/java/jdk/6u39-b04/jdk-6u39-windows-i586.exe

    http://download.oracle.com/otn/java/jdk/6u39-b04/jdk-6u39-windows-x64.exe

    2、Tomcat下载及安装

    Tomcat7下载地址:http://tomcat.apache.org/download-70.cgi

    1.png
    在Windows环境中部署时可以下载32-bit/64-bit Windows Service Installer这个安装包,安装程序会自动添加Windows服务,并提供了两个程序用于配置和监控Tomcat,尤其对于一般用户而言通过图形界面启停Tomcat更易于操作。

    3、 应用程序部署
    Tomcat目录结构:
    bin ----------- 可执行程序目录(Tomcat7w.exe)
    conf ----------- 配置文件目录(server.xml, web.xml)
    lib ----------- 存放Tomcat依赖的jar文件
    logs ----------- 日志文件目录
    temp ----------- 临时文件目录
    webapps ----------- 应用部署目录,我们的应用程序就部署到该目录中
    work ----------- 存放JSP编译后的class文件

    在Eclipse环境中将项目导出成war文件,复制到webapps目录下即可。
    Tomcat启动时会自动先解压war文件,解压出的目录名为war文件的文件名,然后读取目录中的文件来启动我们的应用程序。
    如果需要修改应用程序的配置,可直接修改目录中的配置文件,或覆盖目录中的配置文件或class文件。

    三、 系统优化
    1、 JVM优化
     调整JVM内存
    JVM默认的内存配置不适用于生产环境,很容易出现内存溢出等错误,可以使用开始菜单中的Configure Tomcat程序进行优化。(在Win7系统中要以管理员身份运行Configure Tomcat)


    2.png

    该界面上可以设置初始内存大小和最大内存大小,其对应的JAVA选项分别为-Xms和-Xmx,也可以直接在Java Options输入框中直接输入参数。
    优化参数及取值参考如下:
    -XX:PermSize=128m
    -XX:MaxPermSize=256m
    -Xms1200m
    -Xmx1200m
    -Xss256k
    JVM支持的最大内存大小受限于物理内存和操作系统,32位系统下限制在1.5G~2G,64位系统下无限制。

    Configure Tomcat界面中修改后的参数存储在Windows注册表中:


    3.png

     调整JVM为server 版
    JVM分为client和server两个版本,对于服务端的JAVA应用最好使用server版,可以使用开始菜单中的Configure Tomcat程序修改,默认的JVM是%JAVA_HOME%\jre\bin\client\jvm.dll,可修改为server版的jvm:


    4.png
    1、Tomcat优化

    使用线程池

    打开conf/server.xml,增加:

    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="500" minSpareThreads="20" maxIdleTime="60000" />

    最大线程500(一般服务器足以),最小空闲线程数20,线程最大空闲时间60秒。然后修改<Connector ...>节点,增加executor属性,如:

    <Connector port="80" protocol="HTTP/1.1"

    executor="tomcatThreadPool"

    connectionTimeout="30000"

    redirectPort="443" ....../>

    ² 调整Connector连接参数

    <Connector port="80" protocol="HTTP/1.1"

    executor="tomcatThreadPool"

    maxHttpHeaderSize="8192"

    enableLookups="false"
    

    redirectPort="8443"

    acceptCount="100"

    connectionTimeout="30000"

    disableUploadTimeout="true"

    URIEncoding=”UTF-8” />

    参数分析:

    (1)、maxHttpHeaderSize=”8192”

    此选项用于配置:来自于客户端请求的Request和Response的HTTP header的最大长度,以字节计算。如果不设置,该属性为4096(4K)。

    (2)、maxThreads="500"

    Connector创建的请求处理线程的最大值,它决定了能够同时处理并发请求的最大值。如果不指定,该属性值为200。Tomcat的线程数量太多会导致切换过多,性能下降严重。这个数量应该是你单个机器的承载能力,压力测试下得出的结果。不可任意加大。一般情况下,256-512个已经非常高的数值了。

    (3)、minSpareThreads="20"

    tomcat初始化时创建的线程数,即最小工作线程数目。

    (4)、maxSpareThreads="100"

    tomcat所允许的最大线程数,一旦创建的线程超过这个数,Tomcat就将关闭不 再需要的Socket线程。

    (5)、enableLookups="false"

    使用允许DNS查询,通常情况下设置为false。如果为true则tomcat会损耗一部分系统性能。

    (6)、redirectPort="8443"

    这里系统默认的,它指定转发端口,如果当前只支持non-SSL请求,在需要安全通信的场所,将把客户请求转发至SSL的redirectPort端口。

    (7)、acceptCount=“100”

    当所有请求处理线程都被占用时,允许接收请求队列的最大长度。当队列已满时, 任何收到的请求都将被拒绝。缺省值为10。

    (8)、connectionTimeout="30000"

    Connector接收连接后,等待提供请求URI的时间,缺省值为60000(60秒)。

    (9)、disableUploadTimeout="true"

    该标志位表明当执行servlet时,是否允许servlet容器使用一个不同的、更长的连接超时。启用该标志位将导致在上传数据时,要么使用更长的时间完成上传,要么出现更长的超时。如果不指定,该属性为“false”。

    ² 使用APR来增强Tomcat性能(可选)

    Tomcat可以使用APR来提供超强的可伸缩性和性能,更好地集成本地服务器技术。APR(Apache Portable Runtime)是一个高可移植库,它是Apache HTTP Server 2.x的核心。APR有很多用途,包括访问高级IO功能(例如sendfile,epoll和open SSL),OS级别的功能(随机数生成、系统状态等等),本地进程管理(共享内存、NT管道和UNIX socket)。这些功能使和Tomcat作为一个通常的前台WEB服务器,能更好的和其它本地WEB技术集成,总体上让Java更有效率作为一个高性能Web服务器平台而不是简单作为后台容器。

    下载Tomcat Native:

    http://archive.apache.org/dist/tomcat/tomcat-connectors/native/1.1.27/binaries/tomcat-native-1.1.27-win32-bin.zip

    解压后将tcnative-1.dll文件复制到Tomcat安装目录的bin目录下即可。

    ² 使用带有NIO的HTTP1.1的超文件传输协议(可选)

    Java的IO操作集中在java.io这个包中,是基于流阻塞API(即BIO,Block IO)。对于大多数应用来说,这样的API使用很方便,然而,一些对性能要求较高的应用,尤其是服务器端应用,往往需要一个更为有效的方式来处理IO。从JDK1.4起,NIO API作为一个基于缓冲区,并能提供非阻塞IO操作的API(即NIO,non-blocking IO)被引入。

    BIO与NIO一个比较重要的不同,是我们使用BIO的时候往往会引入多线程,每个连接一个单独的线程;而NIO则是使用单线程或者只使用少量的多线程,每个连接共用一个线程。

    而Tomcat7应用NIO只是用在处理发送、接收信息的时候用到,也就是说:tomcat7还是传统的多线程Servlet。因此即使我们的JAVA应用使用ThreadLocal的,例如JSF的FaceContext、Hibernate的session管理、Strusts的context的管理等等,也不会因为使用NIO而受到影响。

    更改方法:

    打开tomcat的配置文件conf/server.xml

    找到:

    <Connector port="8080" protocol="http1.1" .....

    改为:

    <Connector port="8080"

    protocol="org.apache.coyote.http11.Http11NioProtocol"

    相关文章

      网友评论

          本文标题:tomcat WEB应用部署及优化

          本文链接:https://www.haomeiwen.com/subject/ihaloctx.html