Tomcat中间件

  • tomcat安装:
    1. 从官网下载tomcat压缩包,然后在指定的目录中进行解压;
    2. 安装jdk,并添加jdk环境变量;

  • Tomcat目录:

    [[email protected] ~]$ ll -h tob-api
    总用量 120K
    appdir        ------  war包部署位置
    bin            -------启动程序,启动相关的内存设置等;
    conf            -------端口、解压包路径和解压目录名定义等
    lib
    LICENSE
    logs                -------日志
    NOTICE
    RELEASE-NOTES
    RUNNING.txt
    temp                    -------启动时候放置一些临时文档(可删除)
    webapps                --------war包解压后的目录
    work                    ----------启动后一些参数、环境变量(可删除)

  • Tomcat配置;

    配置主要有两个文件:

  1. tomcat/conf/server.xml 文件;

    此文件中定义了tomcat的端口信息;并且可以指定war包路径,以及解压war包后在webapps目录下的目录名称;

    [[email protected] tob-api]$ grep -3 war conf/server.xml
            <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
                   prefix="localhost_access_log." suffix=".log"
                   pattern="%t ^=^ %{X-FORWARDED-FOR}i ^=^ %a ^=^ %u ^=^ %{User-Agent}i ^=^ %p ^=^ %s ^=^ %b ^=^ %S ^=^ %T ^=^ %D ^=^ %h ^=^ %r ^=^ %U" />
                <Context path="/" docBase="${catalina.base}/appdir/xxx.war" debug="0" privileged="true" reloadable="true" />
          </Host>
        </Engine>
      </Service>
    [[email protected] tob-api]$
    其中:path为"/"说明解压后是ROOT目录;docBase指定了war包存放路径和名称;

  2. tomcat/bin/catalina.sh 文件;

文件定义了内存的使用,以及tomcat性能调优;

#!/bin/sh
            xms_size=‘2G‘
            xmx_size=‘2G‘

tomcat调优:

ENV_DM=`cat ~/.diamond.domain|grep -v "#"`
if [ "${ENV_DM}x" ==  "x" ] || [ "${ENV_DM}x" == "diamond.live.ds.gome.com.cnx" ] || [ "${ENV_DM}x" == "diamond.prelive.ds.gome.com.cnx" ]
  then
    JAVA_OPTS="$JAVA_OPTS -Dapp.home=${CATALINA_BASE} -server -Xms${xms_size} -Xmx${xmx_size} -Xmn2g -Xss256k -XX:PermSize=128m -XX:MaxPermSize=512m -Djava.awt.headless=true -Dfile.encoding=utf-8 -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:AutoBoxCacheMax=20000 -XX:-OmitStackTraceInFastThrow -XX:ErrorFile=${CATALINA_BASE}/logs/hs_err_%p.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${CATALINA_BASE}/logs/ -Xloggc:${CATALINA_BASE}/logs/gc.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps"
  else
    JAVA_OPTS="$JAVA_OPTS -Dapp.home=${CATALINA_BASE} -server -Xms${xms_size} -Xmx${xmx_size} -Xmn128m -Xss256k -XX:PermSize=128m -XX:MaxPermSize=512m -Djava.awt.headless=true -Dfile.encoding=utf-8 -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:AutoBoxCacheMax=20000 -XX:-OmitStackTraceInFastThrow -XX:ErrorFile=${CATALINA_BASE}/logs/hs_err_%p.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${CATALINA_BASE}/logs/ -Xloggc:${CATALINA_BASE}/logs/gc.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps"
fi

jvm堆配置参数

1. -Xms初始堆大小
   默认物理内存的1/64(<1GB)
2. -Xmx最大堆大小
   默认物理内存的1/4(<1GB),实际中建议不大于4GB
3. 一般建议设置-Xms=-Xmx
   好处是避免每次在gc后,调整堆的大小,减少系统内存分配开销
4. 整个堆大小=年轻代大小+年老代大小+持久化大小

jvm新生代(young generation)

1. 新生代=1个eden区+2个Survior区
2. -Xmn 年轻代大小(1.4or lator)
   -XX:NewSize,-XX:MaxNewSize(设置年轻代大小(for 1.3/1.4))
   默认值大小为整个堆的3/8
3. -XX:NewRatio
   年轻代(包含Eden和两个Survivor区)与老年代的比值(除去持久化)
   Xms=Xmx并且设置了Xmn的情况下,该参数不需要设置
4. -XX:SurviorRatio
   Eden区与Survivor区的大小比值,设置为8,则两个Survivor区与一个Eden区的比值为2:8,一个Survivor区占整个年轻代的1/10
5. 用来存放JVM刚分配的Java对象

jvm老年代(tenured greneration)

1. 老年代=整个堆-年轻代大小-持久化大小
2. 年轻代中经过垃圾回收没有回收掉的对象被复制到年老代
3. 老年代存储对象比年轻代年龄大的多,而且不发达对象(缓存)
4. 新建的对象也有可能直接进入老年代
   4.1、大对象,可通过启动参数设置-XX:PretenureSizeThreshold=1024(单位为字节,默认为0)来代表超过多大时就不再新生代分配,而是直接在老年代分配
   4.2、大的数组对象,切数组中无引用外部对象
5. 老年代大小无配置参数

java持久代(perm generation)

1. 持久代=整个堆-年轻代大小-老年代大小
   2. -XX:PermSize -XX:MaxPermSize
       设置持久代的大小,一般情况推荐把-XX:PermSize设置成XX:MaxPermSize的值为相同的值,因为永久代的调整也会导致堆内存需要触发fgc(Full GC)
   3. 存放Class,Method元信息,其大小与项目的规模、类、方法的数量有关。一般设置为128M就够用,设置原则是预留30%的空间
   4. 永久代的回收方式
       4.1、常量池的常量,无用的类信息,常量的回收很简单,没有引用的就可以被回收
       4.2、对无用的类进行回收,必须保证3点:
           类的所有实例都已经被回收
           加载类的ClassLoader已经被回收
           类对象的Class对象没有被引用(既没有通过反射引用该类的方法)

时间: 2024-12-04 16:07:01

Tomcat中间件的相关文章

linux 安装tomcat中间件

1.首先确认是否已安装jdk.配置好所需要的环境变量,如果未安装好,则需要安装jdk和配置好正确的环境变量. 检查是否安装jdk及环境变量配置:#java -version. 2.如上述安装并配置正确,就可以进行tomcat中间件服务的安装配置. 3.Apache Tomcat 官网下载 http://tomcat.apache.org/download-70.cgi 4.通过ftp将下载好的tomcat中间件服务tar.gz 包上传到目标目录下 5.登录终端,cd 进入到上传的目标目录下如:

浅谈tomcat中间件的优化【转】

今天来总结一下tomcat的一些优化的方案,由于本人才疏学浅,写的不好,勿喷! tomcat对于大多数从事开发工作的童鞋应该不会很陌生,通常做为默认的开发环境来为大家服务,不过tomcat默认的一些配置对于生产环境来说是相当不够滴,特别对于内存以及线程的配置方面都很有可能成为日后性能的瓶颈. 接下来咱们就聊聊tomcat的优化,从内存以及线程两个方面来谈: 1.内存方面 tomcat的内存优化操作起来就比较简单了 如果是linux环境的话设置如下: 修改TOMCAT_HOME/bin/catal

tomcat中间件提交表单数据量过大警告处理方案

昨天系统出现了一个比较奇怪的BUG,表单提交后,数据没有全部执行. 查看tomcat日志发现有以下警告: 18:52:23,058  WARN HttpMethodBase:682 - Going to buffer response body of large or unknown size. Using getResponseBodyAsStream instead is recommended. 18:52:31,290  WARN HttpMethodBase:682 - Going t

Tomcat中间件URL中文字符传递问题

1. 问题描述: tomcat中如果URL中需要传递中文参数,需要配置tomcat的service.xml中文传递的编码方式,否则中文传递将出现乱码,导致程序异常. 2. 解决方式: 修改tomcat配置文件: 修改tomcat配置文件service.xml:URIEncoding="UTF-8" <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000

tomcat中间件配置说明

因为Tomcat 技术先进.性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器.目前最新版本是8.0. 方法/步骤 一.tomcat\bin文件夹下的setclasspath.bat文件,修改: 1.set JAVA_HOME=C:\jdk\jdk1.6.0_03:把这个路径改为现在正在传的这个jdk的实际路径. 2.set CLASSPATH=%JAVA_HOME%\lib\tools.jar;C:\jar\javasoft\j

Tomcat部署应用,客户端阻止cookie时,成功登录后,还是出现登录失败的问题解决

一.提出问题 如果用户浏览器设置的阻止cookie,当服务器完成登录后,并标记当前session已登录,那么在浏览器进入转向页面时,可能出现引入js无法下载,点击页面中超链接后提示用户未登录. 二.解决问题 使用response.encodeURL("url"). <script type="text/javascript" src="<%=response.encodeURL("jquery/jquery-min.js")

tomcat运行模式(bio,aio,apr)

tomcat中间件的启动运行模式有分为3种,可以在启动运行控制台和启动日志中看出.默认模式bio(阻塞IO)  缺点:能非常低下,没有经过任何优化处理和支持,并发量高时,线程数较多,浪费资源.nio(异步IO)利用Java的异步IO处理,可以通过少量的线程处理大量的请求.apr(系统解决IO阻塞)从操作系统层面解决io阻塞问题,必须手动安装apr和native包. 1.bio模式(默认) [[email protected] conf]# tailf  ../logs/catalina.out

tomcat编译超过64k大小的jsp文件报错原因

今天遇到一个问题,首先是在tomcat中间件上跑的web项目,一个jsp文件,因为代码行数实在是太多了,更新了几个版本之后编译报错了,页面打开都是报500的错误,500的报错,知道http协议返回码的都知道,这是服务端的报错. jsp编译过程是先编译为servlet,然后再通过类加载器编译为.class文件,再执行为Servlet实例.这就是jsp的编译过程.所以jsp报500错误也可以理解,属于服务端的报错没什么好怀疑的. 服务端报错,肯定就是去console拿日志了.从CONSOLE拿到日志

关于Linux系统下基于Tomcat部署和升级war包的详细过程

1.首先Linux先安装java,Tomcat 中间件规范要求: 1)         软件必须下载到/services/download_soft_v        --------(用xftp上传到此目录) 2)         软件必须安装到/services/current_apps        --------------(将上传的java和tomcat 复制或者移动到此目录下) 操作步骤: 1)         利用xftp把软件包传到服务器上 2)         先上传至/ho