`

(原创)tomcat 的优化配置

 
阅读更多

Tomcat 的优化配置

 

一,简化应用:

webapps与server/wenapps下的应用,减少启动的应用,提高安全性。

 

# 删除webapps下所有文件

# rm –fr $CATALINA_HOME/webapps/*

# 删除server/wenapps下所有文件

# rm –fr $CATALINA_HOME/server/webapps/*

 

二,精简server.xml配置文件:

原始server.xml配置文件

 

<?xml version='1.0' encoding='utf-8'?>

<Server port="8005" shutdown="SHUTDOWN">
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  <Listener className="org.apache.catalina.core.JasperListener" />
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />

  <GlobalNamingResources>
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
  </GlobalNamingResources>

  <Service name="Catalina">
    <Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" />

    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

    <Engine name="Catalina" defaultHost="localhost">
      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
             resourceName="UserDatabase"/>
      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
      </Host>
    </Engine>
  </Service>
</Server>

 

 

1部分:<Server>

1,portTomcat监听shutdown命令端口.终止服务器运行时,必须在Tomcat服务器所在的机器上发出shutdown命令.该属性是必须的.

2,shutdown指定终止Tomcat服务器运行时,发给Tomcat服务器的shutdown监听端口的字符串.该属性必须设置

 

 

2部分:<Listener>

<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />

 

 

3部分:<GlobalNamingResources>定义服务器的全局JNDI资源

其中<Environment>元素,<Resource>元素,<Resourceparams>元素

<Environment>元素的有效属性所如下:

 

属性

描述

description

环境条目的文字描述(可选)

name

环境条目的名称,相对于java:comp/env context

override

如果不希望/WEB-INF/web.xml中具有相同名称的<env-entry>覆盖这里指定的值,设为false。缺省值为true

type

环境条目的Java类名的全称./WEB-INF/web.xml中,<env-entry-type>必须是如下的值:java.lang.Boolean, java.lang.Byte, java.lang.Character, java.lang.Double, java.lang.Float, java.lang.Integer, java.lang.Long, java.lang.Short, or java.lang.String.

value

通过JNDI context请求时,返回给应用的参数值。这个值必须转换成type属性定义的Java类型

配置命名的值,这些值作为环境条目资源(Environment Entry Resource),对整个web应用可见。

 

<Resource>元素的有效属性如下:

 

Attribute

Description

auth

指定是web应用代码本身sign on到对应的resource mananger,还是由container代表web应用sign onresource manager。该属性的值必须是Application或者Container。如果在web application deployment descriptor中使用<resource-ref>,这个属性是必需的,如果使用<resource-env-ref>,这个属性是可选的。

description

资源的文字描述(可选)

name

资源的名称,相对于java:comp/env context

scope

指定通过这个resource manager得到的连接是否共享。该属性的值必须是Shareable或者Unshareable。缺省情况下,假定连接是共享的。

type

web应用查找该资源的时候,返回的Java类名的全称。

定义资源的特性;类似于/WEB-INF/web.xml中定义资源的特性

使用JNDI查找<resource-ref><resource-env-ref>元素时,这些特性被返回。对同一资源名称,还必须定义资源参数(见下面“资源参数”小节),这些参数用来配置对象工厂(object factory)以及对象工厂的属性。

比如,你可以按照如下方式创建资源定义:

<GlobalNamingResources ...> 
... 
<Resource name="jdbc/EmployeeDB" auth="Container"   
  type="javax.sql.DataSource" 
  description="Employees Database for HR Applications"/> 
... 
</GlobalNamingResources> 

 

 

 

  

这等价于在/WEB-INF/web.xml中包含如下元素:

 

 

区别是,前者不需要修改deployment descriptor来定制这个值。

 

 

<Resourceparams>元素的有效属性如下:

 

属性

描述

name

配置的资源名称,相对于java:comp/env context。这个名称必须与$CATALINA_HOME/conf/server.xml中某个<Resource>元素定义的资源名称匹配,或者在/WEB-INF/web.xml中通过<resource-ref>或者<resource-env-ref>元素应用。

资源参数(Resource Parameters

资源参数用来配置资源管理器(resource manager,或对象工厂,object factory)。在做JNDI查找时,资源管理器返回查找的对象。在资源可以被访问之前,对<Context><DefaultContext>元素的每个<Resource>元素,或者/WEB-INF/web.xml中定义的每个<resource-ref><resource-env-ref>元素,都必须定义资源参数。

资源参数是用名称定义的,使用的资源管理器(或者object factory)不同,参数名称的集合也不一样。这些参数名和工厂类的JavaBeans属性相对应。JNDI实现通过调用对应的JavaBeans属性设置函数来配置特定的工厂类,然后通过lookup()调用使得该实例可见。

 

一个JDBC数据源的资源参数可以按照如下方式定义:

 

 

  

如果你需要为某个特定的资源类型指定工厂内的Java类名,在<ResourceParams>元素中嵌套一个叫做factory<parameter>条目。 

 

 

4部分:<Service>

该元素由org.apache.catalina.Service接口定义,它包含一个<Engine>元素,以及一个或多个<Connector>,这些Connector元素共享用同一个Engine元素

 

 

5部分:<Connector>

每个Service元素只能有一个Engine元素.元素处理在同一个<Service>中所有<Connector>元素接收到的客

户请求.org.apahce.catalina.Engine接口定义.

Connector接口定义.<Connector>元素代表与客户程序实际交互的给件,它负责接收客户请求,以及向客户返回响应结果.

 

<Connector port ="8080" maxThread ="50" 
  minSpareThreads ="25" maxSpareThread ="75" 
  enableLookups ="false" redirectPort ="8443" 
  acceptCount ="100" debug ="0" 
  connectionTimeout ="20000" 
  disableUploadTimeout ="true" /> 

<Connection port ="8009" enableLookups ="false" 
  redirectPort ="8443" debug ="0" protocol ="AJP/1.3" />

 

 

 第一个Connector元素定义了一个HTTP Connector,它通过8080端口接收HTTP请求;第二个Connector元素定义了一个JD Connector,它通过8009端口接收由其它服务器转发过来的请求.

Connector元素共用属性

1>    className指定实现Connector接口的类

2>    enableLookups如果设为true,表示支持域名解析,可以把IP地址解析为主机名.WEB应用中调用request.getRemoteHost方法返回客户机主机名.默认值为true

3>    redirectPort指定转发端口.如果当前端口只支持non-SSL请求,在需要安全通信的场命,将把客户请求转发至SSLredirectPort端口HttpConnector元素的属性

4>    className实现Connector的类

5>    port设定Tcp/IP端口,默认值为8080,如果把8080改成80,则只要输入http://localhost 即可因为TCP/IP的默认端口是80

6>    address如果服务器有二个以上ip地址,此属性可以设定端口监听的ip地址.默认情况下,端口会监听服务器上所有的ip地址

7>    bufferSize设定由端口创建的输入流的缓存大小.默认值为2048byte

8>    protocol设定Http协议,默认值为HTTP/1.1

9>    maxThreads设定在监听端口的线程的最大数目,这个值也决定了服务器可以同时响应客户请求的最大数目.默认值为200

10>acceptCount设定在监听端口队列的最大客户请求数量,默认值为10.如果队列已满,客户必须等待.

11>connectionTimeout定义建立客户连接超时的时间.如果为-1,表示不限制建立客户连接的时间

 

JkConnector的属性

1>    className实现Connector的类

2>    port设定AJP端口号

3>    protocol必须设定为AJP/1.3

 

 

6部分:<Engine>

< Engine  name ="Catalina"  defaultHost ="localhost"  debug ="0" >

1>    className指定实现Engine接口的类,默认值为StandardEngine

2>    defaultHost指定处理客户的默认主机名,<Engine>中的<Host>子元素中必须定义这一主机

3>    name定义Engine的名字在<Engine>可以包含如下元素<Logger>, <Realm>, <Value>, <Host> 

 

 

<Host>元素
它由Host接口定义.一个Engine元素可以包含多个<Host>元素.每个<Host>的元素定义了一个虚拟主机.
包含了一个或多个Web应用.

  < Host  name ="localhost"  debug ="0"  appBase ="webapps"  unpackWARs ="true"  autoDeploy ="true" >

1>    className指定实现Host接口的类.默认值为StandardHost

2>    appBase指定虚拟主机的目录,可以指定绝对目录,也可以指定相对于   <CATALINA_HOME>的相对目录.如果没有此项,默认为<CATALINA_HOME>/webapps

3>    autoDeploy如果此项设为true,表示Tomcat服务处于运行状态时,能够监测appBase下的文件,如果有新有web应用加入进来,会自运发布这个WEB应用

4>    unpackWARs如果此项设置为true,表示把WEB应用的WAR文件先展开为开放目录结构后再运行.如果设为false将直接运行为WAR文件

5>    alias指定主机别名,可以指定多个别名

6>    deployOnStartup如果此项设为true,表示Tomcat服务器启动时会自动发布appBase目录下所有的Web应用.如果Web应用中的server.xml没有相应的<Context>元素,将采用Tomcat默认的Context

7>    name定义虚拟主机的名字在<Host>元素中可以包含如下子元素<Logger>, <Realm>, <Value>, <Context>

 

<Context>元素

它由Context接口定义.是使用最频繁的元素.每个<Context元素代表了运行在虚拟主机上的单个Web应用.

一个<Host>可以包含多个<Context>元素.每个web应用有唯一的一个相对应的Context代表web应用自身.servlet容器为第一个web应用创建一个ServletContext对象.

< Context  path ="/sample"  docBase ="sample"  debug ="0"  reloadbale ="true" >

1>    className指定实现Context的类,默认为StandardContext

2>    path指定访问Web应用的URL入口,注意/myweb,而不是myweb了事

3>    reloadable如果这个属性设为true, Tomcat服务器在运行状态下会监视在WEB-INF/classesWeb-INF/lib目录CLASS文件的改运.如果监视到有class文件被更新,服务器自重新加载Web应用

4>    cookies指定是否通过Cookies来支持Session,默认值为true

5>    useNaming指定是否支持JNDI,默认值为了true<Context>元素中可以包含如下元素

<Logger>, <Realm>, <Resource>, <ResourceParams>

 

 

三,优化JDK
Tomcat默认可以使用的内存为128MB,Windows下,在文件{tomcat_home}/bin/catalina.bat,Unix下,在文件$CATALINA_HOME/bin/catalina.sh的前面,增加如下设置:
JAVA_OPTS='$JAVA_OPTS -Xms[初始化内存大小] -Xmx[可以使用的最大内存]或设置环境变量:export JAVA_OPTS=”$JAVA_OPTS -Xms[初始化内存大小] -Xmx[可以使用的最大内存]”

一般说来,你应该使用物理内存的 80% 作为堆大小。如果本机上有Apache服务器,可以先折算Apache需要的内存,然后修改堆大小。建议设置为70%;建议设置[[初始化内存大小]等于[可以使用的最大内存],这样可以减少平凡分配堆而降低性能。

本例使用加入环境变量的方式:
# vi /etc/profile

加入:export JAVA_OPTS=”$JAVA_OPTS -Xms700 –Xmx700
# source /etc/profile

 

实际完整的server.xml文件,等再整理好上传。

 

 

 

2
0
分享到:
评论

相关推荐

    tomcat6下连接池的配置与使用-原创

    在Tomcat6下配置和使用连接池是一项关键技能,它不仅有助于优化数据库访问性能,还能显著减少数据库资源消耗。通过上述步骤,开发者可以轻松地在其应用中集成高效的连接池机制,从而构建出响应迅速且可扩展的Web应用...

    在同一台服务器上配置多个Tomcat(原创)

    在IT行业中,尤其是在...通过以上步骤,我们可以在同一台服务器上成功配置并运行多个独立的Tomcat实例,实现服务的隔离和优化资源利用。这种配置方式在大型Web应用环境中尤其常见,有助于提高系统的稳定性和扩展性。

    原创-tomcat快速开发调试-类修改热部署

    3. 在Eclipse中配置JREs,确保选用的是JDK 1.5,并添加JVM参数:-Xms512M -Xmx1024M -XX:PermSize=256M -XX:MaxPermSize=512M,以优化内存使用。 4. 确保Tomcat 5.5使用的是DCE VM增强的JDK 1.6。 5. 设置Tomcat启动...

    tomcat架构解析_刘光瑞(著) 人民邮电出版社_ 2017-05-01.7z

    总的来说,《Tomcat架构解析》涵盖了从基础概念到高级特性的全面内容,包括配置、优化、安全和故障排查等方面,是学习和掌握Tomcat服务器的必备参考资料。通过阅读这本书,读者可以深入了解Tomcat的工作方式,从而更...

    支持Maven工程自动计算依赖的TomcatPlugin,免费放送,全网唯一原创

    `TomcatPlugin`是一款针对Apache Tomcat服务器的Eclipse插件,它极大地优化了Maven项目的部署流程。通过集成Maven的依赖管理机制,该插件能够自动检测并包含项目中的所有依赖包,确保在Tomcat服务器上运行时无需手动...

    Tomcat多端口域名访问并配置开启gzip压缩方法

    这些操作对于希望优化Tomcat配置的开发者来说非常实用。 最后,如果读者在实施上述配置时遇到问题,可以留言询问。作者承诺会尽快回复,帮助读者解决问题。同时,作者对于支持其网站的读者表示感谢,并鼓励大家转载...

    IIS 整合 tomcat +需要用到的文件

    压缩包中的"IIS6_0整合Tomcat6_0(相对原创) - For_suzhen的专栏 - CSDNBlog.htm"和相关文件,很可能是从CSDN博客上下载的文章,详细介绍了如何进行IIS6.0与Tomcat6.0的整合步骤,包括配置文件的使用和安装过程。...

    支持Maven工程自动计算依赖的TomcatPlugin,免费放送,全网唯一原创(版本2)

    这个插件是作者的原创作品,并且在全网中独一无二,特别是版本2更是在原有基础上进行了优化。它主要的功能亮点在于与Maven工程的集成,能自动计算并处理Maven项目的依赖关系,从而省去了开发者手动在DevLoader中选择...

    图解Solr5.3.1与MySQL配置【原创】

    Solr还支持一系列词典配置文件,这些文件可以帮助优化搜索结果的质量。 - **currency.xml**:不同币种之间的转换汇率设置。 - **protwords.txt**:主体词配置,这些词在分词过程中不会被拆分。 - **stopwords.txt**...

    J2EE入门开发原创教程

    对于JB9的使用,可能需要了解一些配置技巧,如优化编译设置,提升IDE性能,以及如何调试J2EE应用程序等,这些都可以提高开发效率。 **Web层通用技术** 这部分内容可能涵盖了Servlet、JSP、JSF等Web开发技术的基础...

    ssm企业级框架精简版本,纯注解,绝对原创(最新版本,之前连接失效了)

    为了便于快速启动和运行,这个压缩包可能包含了web.xml文件,这是Servlet容器(如Tomcat)的配置文件,用于定义Servlet、过滤器和监听器等。此外,可能还包括了pom.xml文件,这是一个Maven项目的核心配置文件,用来...

    基于springboot原创歌曲分享平台.zip

    它内置了Tomcat服务器,简化了配置,并提供了自动配置的功能。 4. **SSM**:Spring、SpringMVC和MyBatis的简称,是Java Web开发中常用的三大框架,它们一起构成了一种成熟的后端开发解决方案。 5. **微信小程序**:...

    java框架搭建+IDEA使用技巧

    原创java框架搭建+idea使用技巧整理,最新最全java编码一篇到位,适用idea2020.2 1、JDK安装 2、Tomcat配置 3、Maven配置 4、Git配置 5、idea优化设置 6、常用插件安装 7、常用快捷键

    通向架构师的道路(第1-20天)

    (第九天)之weblogic的集群与配置 (第十天)之Axis2 Web Service(一) (第十一天)之Axis2 Web Service(二) (第十二天)之Axis2 Web Service(三) (第十三天)Axis2 Web Service安全初步 (第十四天)Axis2 Web ...

    基于ssm原创音乐小程序源码数据库文档.zip

    2. **Spring Boot**:Spring Boot简化了Spring应用的初始搭建以及开发过程,通过内置的Tomcat服务器和自动配置功能,可以快速构建微服务。 3. **微信小程序开发**:掌握微信小程序的开发环境设置,包括开发者工具的...

Global site tag (gtag.js) - Google Analytics