由于刚开始公司的服务器一个tomcat部署3个项目:PC,wap,CRM系统,每次修改其中某一个项目,需要重启tomcat的时候,都会影响到其他的项目,因此,最后更换为3个tomcat,分别部署3个项目。
tomcat多了,就想内存调优化一下
Tomcat默认可以使用的内存为128MB,对于访问数比较多、比较吃内存的应用来说,这是不够的。我们可以通过调整Java虚拟机的启动参数来增加Tomcat可使用的内存。
tomcat内存优化
下面就是众所周知的两个参数
-Xms<size> JVM初始化堆的大小
-Xmx<size> JVM堆的最大值
比如,我想设置初始内存大小为128M,最多占用1G,就是下面的设置:
-Xms128m
-Xmx1024m
在Linux/Unix下,可以通过在 {tomcat_dir}/bin/catalina.sh 中增加或修改 JAVA_OPTS 来达到:
JAVA_OPTS="-Xms128m -Xmx1024m"
在Windows的免安装版本,可以通过在 {tomcat_dir}/bin/catalina.bat 中增加或修改 JAVA_OPTS 来达到:
set JAVA_OPTS=-Xms128m -Xmx1024m
tomcat 线程优化
<Connector port="80" protocol="HTTP/1.1" maxThreads="600" minSpareThreads="100" maxSpareThreads="500" acceptCount="700" connectionTimeout="20000" redirectPort="8443" />
maxThreads="600" ///最大线程数
minSpareThreads="100"///初始化时创建的线程数
maxSpareThreads="500"///一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。
acceptCount="700"//指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理
这里是http connector的优化,如果使用apache和tomcat做集群的负载均衡,并且使用ajp协议做apache和tomcat的协议转发,那么还需要优化ajp connector。
<Connector port="8009" protocol="AJP/1.3" maxThreads="600" minSpareThreads="100" maxSpareThreads="500" acceptCount="700" connectionTimeout="20000" redirectPort="8443" />
由于tomcat有多个connector,所以tomcat线程的配置,又支持多个connector共享一个线程池。
首先。打开/conf/server.xml,增加
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="500" minSpareThreads="20" maxIdleTime="60000" />
最大线程500(一般服务器足以),最小空闲线程数20,线程最大空闲时间60秒。
然后,修改<Connector ...>节点,增加executor属性,executor设置为线程池的名字:
<Connector executor="tomcatThreadPool" port="80" protocol="HTTP/1.1" connectionTimeout="60000" keepAliveTimeout="15000" maxKeepAliveRequests="1" redirectPort="443" />
可以多个connector公用1个线程池,所以ajp connector也同样可以设置使用tomcatThreadPool线程池。
禁用DNS查询
当web应用程序向要记录客户端的信息时,它也会记录客户端的IP地址或者通过域名服务器查找机器名 转换为IP地址。
DNS查询需要占用网络,并且包括可能从很多很远的服务器或者不起作用的服务器上去获取对应的IP的过程,这样会消耗一定的时间。
修改server.xml文件中的Connector元素,修改属性enableLookups参数值: enableLookups="false"
如果为true,则可以通过调用request.getRemoteHost()进行DNS查询来得到远程客户端的实际主机名,若为false则不进行DNS查询,而是返回其ip地址
设置session过期时间
conf\web.xml中通过参数指定:
<session-config> <session-timeout>180</session-timeout> </session-config> 单位为分钟。
Apr插件提高Tomcat性能
Tomcat可以使用APR来提供超强的可伸缩性和性能,更好地集成本地服务器技术.
APR(Apache Portable Runtime)是一个高可移植库,它是Apache HTTP Server 2.x的核心。APR有很多用途,包括访问高级IO功能(例如sendfile,epoll和OpenSSL),OS级别功能(随机数生成,系统状态等等),本地进程管理(共享内存,NT管道和UNIX sockets)。这些功能可以使Tomcat作为一个通常的前台WEB服务器,能更好地和其它本地web技术集成,总体上让Java更有效率作为一个高性能web服务器平台而不是简单作为后台容器。
在产品环境中,特别是直接使用Tomcat做WEB服务器的时候,应该使用Tomcat Native来提高其性能
要测APR给tomcat带来的好处最好的方法是在慢速网络上(模拟Internet),将Tomcat线程数开到300以上的水平,然后模拟一大堆并发请求。
如果不配APR,基本上300个线程狠快就会用满,以后的请求就只好等待。但是配上APR之后,并发的线程数量明显下降,从原来的300可能会马上下降到只有几十,新的请求会毫无阻塞的进来。
在局域网环境测,就算是400个并发,也是一瞬间就处理/传输完毕,但是在真实的Internet环境下,页面处理时间只占0.1%都不到,绝大部分时间都用来页面传输。如果不用APR,一个线程同一时间只能处理一个用户,势必会造成阻塞。所以生产环境下用apr是非常必要的。
- 2011-7-20 15:17:05 org.apache.catalina.core.AprLifecycleListener init
- 信息: Loaded APR based Apache Tomcat Native library 1.1.20.
- 2011-7-20 15:17:05 org.apache.catalina.core.AprLifecycleListener init
- 信息: APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
- 2011-7-20 15:17:05 org.apache.coyote.http11.Http11AprProtocol init
(1)安装APR tomcat-native apr-1.3.8.tar.gz 安装在/usr/local/apr #tar zxvf apr-1.3.8.tar.gz #cd apr-1.3.8 #./configure;make;make install apr-util-1.3.9.tar.gz 安装在/usr/local/apr/lib #tar zxvf apr-util-1.3.9.tar.gz #cd apr-util-1.3.9 #./configure --with-apr=/usr/local/apr ----with-java-home=JDK;make;make install #cd apache-tomcat-6.0.20/bin #tar zxvf tomcat-native.tar.gz #cd tomcat-native/jni/native #./configure --with-apr=/usr/local/apr;make;make install (2)设置 Tomcat 整合 APR 修改 tomcat 的启动 shell (startup.sh),在该文件中加入启动参数: CATALINA_OPTS="$CATALINA_OPTS -Djava.library.path=/usr/local/apr/lib" 。 (3)判断安装成功: 如果看到下面的启动日志,表示成功。 2007-4-26 15:34:32 org.apache.coyote.http11.Http11AprProtocol init
相关推荐
【Tomcat内存优化】是提升服务器性能的关键步骤,特别是对于那些运行复杂Web应用程序或高流量网站的服务器来说。默认情况下,Tomcat分配的内存相对较小,仅为128MB,这可能不足以应对大规模的用户访问和数据处理。...
SSH整合与Tomcat内存优化是Java Web开发中的关键环节,主要涉及到Spring、Struts和Hibernate这三个框架的集成以及Tomcat服务器性能的调优。这里我们将深入探讨这两个主题,并结合提供的资源进行详细阐述。 首先,...
### Tomcat JVM内存优化(Linux环境) 在Linux环境下运行Tomcat服务器时,经常会遇到与Java虚拟机(JVM)相关的内存溢出问题。这些问题通常表现为`java.lang.OutOfMemoryError`异常,具体又分为两类:`PermGen ...
Tomcat内存优化主要是对 tomcat 启动参数优化,我们可以在 tomcat 的启动脚本 catalina.sh 中设置 java_OPTS 参数。 JAVA_OPTS参数说明 server 启用jdk 的 server 版; -Xms java虚拟机初始化时的最小内存; -...
【描述】:“Tomcat7性能优化调优Tomcat7性能优化调优Tomcat7性能优化调优”重复强调了对Tomcat7版本的性能调整,这可能涉及到内存管理、线程池设置、连接器配置、JVM参数优化等多个方面。性能调优的目标是提高...
Tomcat性能优化主要包括代码层优化、JVM内存优化和应用配置优化三方面。 代码层优化是指通过优化Java代码,减少循环嵌套、调用和复杂逻辑,以提高代码的执行效率。例如,避免使用过多的循环嵌套,减少方法的调用...
#### 一、Tomcat内存优化 ##### 1. JAVA_OPTS 参数说明 在进行Tomcat的性能优化时,内存优化是非常关键的一部分。这通常涉及对Tomcat启动参数的调整,特别是设置`JAVA_OPTS`参数。此参数可以在Tomcat的启动脚本`...
监控Tomcat内存使用情况是确保应用稳定运行的关键环节。Tomcat作为一款广泛应用的Java Servlet容器,其内存管理直接影响到Web应用程序的性能和响应速度。理解并监控这些内存指标可以帮助我们及时发现并解决潜在的...
### Tomcat内存设置详解 #### 引言 在构建高性能且稳定的Web应用时,合理配置Tomcat内存参数是至关重要的一步。Tomcat作为一款广泛使用的开源应用服务器,其性能受到诸多因素的影响,其中内存配置尤为关键。正确的...
#### 一、Tomcat 内存优化 ##### 1.1 基本原理 在启动 Java 应用程序时,JVM(Java 虚拟机)会为应用程序分配一定的初始内存和最大内存。这些设置对程序的性能有着重要的影响。当应用程序接近最大内存限制时,JVM ...
#### 一、Tomcat内存优化 Tomcat的内存优化主要集中在Java虚拟机(JVM)的参数配置上,合理地设置JVM参数能够显著提高Tomcat处理大量并发请求的能力。 - **Java_OPTS参数详解** - `-server`:启用JDK的Server模式...
《深入探讨:Tomcat性能优化》 在Java Web开发领域,Tomcat作为一款广泛应用的开源Servlet容器,其性能优化对于提升整个Web应用的响应速度和处理能力至关重要。本篇文章将全面解析Tomcat性能优化的各个方面,帮助...
总结来说,处理Tomcat内存泄漏涉及对JVM内存管理的深入理解、使用诊断工具、合理配置JVM参数、优化代码以及定期维护。通过正确使用`setenv`文件,可以有效地定制Tomcat的启动参数,以适应特定的应用场景并预防内存...
本篇将详细介绍如何解决Tomcat内存溢出的问题,以及如何进行相应的配置优化。 首先,我们需要理解什么是内存溢出。当一个程序在运行过程中,分配给它的内存不足以存储所有数据时,就会发生内存溢出。在Java环境中,...
【Tomcat集群优化详细配置】 在IT行业中,服务器性能优化是一项关键任务,特别是在高并发、大规模用户访问的场景下。Tomcat,作为广泛使用的Java应用服务器,常常需要通过集群部署来提升系统的可用性和可伸缩性。...