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,port为Tomcat监听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 on到resource 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请求,在需要安全通信的场命,将把客户请求转发至SSL的redirectPort端口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/classes和Web-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文件,等再整理好上传。
分享到:
相关推荐
在Tomcat6下配置和使用连接池是一项关键技能,它不仅有助于优化数据库访问性能,还能显著减少数据库资源消耗。通过上述步骤,开发者可以轻松地在其应用中集成高效的连接池机制,从而构建出响应迅速且可扩展的Web应用...
在IT行业中,尤其是在...通过以上步骤,我们可以在同一台服务器上成功配置并运行多个独立的Tomcat实例,实现服务的隔离和优化资源利用。这种配置方式在大型Web应用环境中尤其常见,有助于提高系统的稳定性和扩展性。
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架构解析》涵盖了从基础概念到高级特性的全面内容,包括配置、优化、安全和故障排查等方面,是学习和掌握Tomcat服务器的必备参考资料。通过阅读这本书,读者可以深入了解Tomcat的工作方式,从而更...
`TomcatPlugin`是一款针对Apache Tomcat服务器的Eclipse插件,它极大地优化了Maven项目的部署流程。通过集成Maven的依赖管理机制,该插件能够自动检测并包含项目中的所有依赖包,确保在Tomcat服务器上运行时无需手动...
这些操作对于希望优化Tomcat配置的开发者来说非常实用。 最后,如果读者在实施上述配置时遇到问题,可以留言询问。作者承诺会尽快回复,帮助读者解决问题。同时,作者对于支持其网站的读者表示感谢,并鼓励大家转载...
压缩包中的"IIS6_0整合Tomcat6_0(相对原创) - For_suzhen的专栏 - CSDNBlog.htm"和相关文件,很可能是从CSDN博客上下载的文章,详细介绍了如何进行IIS6.0与Tomcat6.0的整合步骤,包括配置文件的使用和安装过程。...
这个插件是作者的原创作品,并且在全网中独一无二,特别是版本2更是在原有基础上进行了优化。它主要的功能亮点在于与Maven工程的集成,能自动计算并处理Maven项目的依赖关系,从而省去了开发者手动在DevLoader中选择...
Solr还支持一系列词典配置文件,这些文件可以帮助优化搜索结果的质量。 - **currency.xml**:不同币种之间的转换汇率设置。 - **protwords.txt**:主体词配置,这些词在分词过程中不会被拆分。 - **stopwords.txt**...
对于JB9的使用,可能需要了解一些配置技巧,如优化编译设置,提升IDE性能,以及如何调试J2EE应用程序等,这些都可以提高开发效率。 **Web层通用技术** 这部分内容可能涵盖了Servlet、JSP、JSF等Web开发技术的基础...
为了便于快速启动和运行,这个压缩包可能包含了web.xml文件,这是Servlet容器(如Tomcat)的配置文件,用于定义Servlet、过滤器和监听器等。此外,可能还包括了pom.xml文件,这是一个Maven项目的核心配置文件,用来...
它内置了Tomcat服务器,简化了配置,并提供了自动配置的功能。 4. **SSM**:Spring、SpringMVC和MyBatis的简称,是Java Web开发中常用的三大框架,它们一起构成了一种成熟的后端开发解决方案。 5. **微信小程序**:...
原创java框架搭建+idea使用技巧整理,最新最全java编码一篇到位,适用idea2020.2 1、JDK安装 2、Tomcat配置 3、Maven配置 4、Git配置 5、idea优化设置 6、常用插件安装 7、常用快捷键
(第九天)之weblogic的集群与配置 (第十天)之Axis2 Web Service(一) (第十一天)之Axis2 Web Service(二) (第十二天)之Axis2 Web Service(三) (第十三天)Axis2 Web Service安全初步 (第十四天)Axis2 Web ...
2. **Spring Boot**:Spring Boot简化了Spring应用的初始搭建以及开发过程,通过内置的Tomcat服务器和自动配置功能,可以快速构建微服务。 3. **微信小程序开发**:掌握微信小程序的开发环境设置,包括开发者工具的...