`
郑云飞
  • 浏览: 796347 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Tomcat内存优化

 
阅读更多

由于刚开始公司的服务器一个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是非常必要的。

安装方式
 
在Window下安装
 
1. 首先下载 tcnative-1.dll
    下载地址:http://archive.apache.org/dist/tomcat/tomcat-connectors/native/1.1.19/binaries/win32/
 
2. 直接拷贝tcnative-1.dll到TOMCAT_HOME/bin目录下,启动即可
 
3. 验证是否启动
    看见类似这样的信息
Cmd代码  收藏代码
  1. 2011-7-20 15:17:05 org.apache.catalina.core.AprLifecycleListener init  
  2. 信息: Loaded APR based Apache Tomcat Native library 1.1.20.  
  3. 2011-7-20 15:17:05 org.apache.catalina.core.AprLifecycleListener init  
  4. 信息: APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].  
  5. 2011-7-20 15:17:05 org.apache.coyote.http11.Http11AprProtocol init  
    就证明 apr 已启动
linux下
(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 内存优化

    tomcat内存溢出分析及解决方案,主要是分析tomcat内存溢出原因及对应的解决方案

    tomcat内存优化

    tomcat的内存优化...一般很难找到这么齐全的了

    Tomcat JVM内存优化(Linux环境)

    Linux环境的Tomcat JVM内存优化 java虚拟机内存溢出问题的解决

    优化Tomcat配置(内存、并发、缓存等方面)方法详解

    Tomcat内存优化主要是对 tomcat 启动参数优化,我们可以在 tomcat 的启动脚本 catalina.sh 中设置 java_OPTS 参数。 JAVA_OPTS参数说明 server 启用jdk 的 server 版; -Xms java虚拟机初始化时的最小内存; -...

    SSH整合问题-tomcat内存优化

    NULL 博文链接:https://weizhilizhiwei.iteye.com/blog/1462592

    Tomcat 安全配置与性能优化

    Tomcat内存优化主要是对 tomcat 启动参数优化,我们可以在 tomcat 的启动脚本 catalina.sh 中设置 JAVA_OPTS参数

    tomcat7优化版

    tomcat是经过优化配置的,下载根据自己内存大小好修改即可使用,下载后打(windows)开/bin/catalina.bat (linux)/bin/catalina.sh 下JAVA_OPTS= 后面内存参数修改即可 ;/conf/server.xml 已配置三种模式(bio/nio/...

    Tomcat7性能优化

    通过优化tomcat提高网站的并发能力。服务器所能提供CPU、内存、硬盘的性能对处理能力有决定性影响。

    tomcat内存监控程序

    该程序能实时监控Tomcat服务器的运行内存,给运维人员提供可靠的消息,方便Tomcat的性能优化。

    Tomcat性能优化及JVM内存工作原理

    Java性能优化原则:代码运算性能、内存回收、应用配置(影响Java程序主要原因是垃圾回收,下面会重点介绍这方面) 代码层优化:避免过多循环嵌套、调用和复杂逻辑

    改善tomcat内存不足

    改善使用tomcat的过程中内存的优化,内存的不足等等

    tomcat 安装、配置及调优

    详细讲解了tomcat 内存优化的参数,tomcat安装配置

    Tomcat性能优化.docx

    在较大型的应用项目中,默认的内存是不够的,有可能导致系统无法运行。常见的问题是报Tomcat内存溢出错误“java.lang.OutOfMemoryError: Java heap space”,从而导致客户端显示500错误。

    tomcat8优化配置.zip

    tomcat8优化配置,jvm 内存溢出,服务器连接效率

    tomcat部署与内存调优

    TOMCAT应用服务器部署与内存调优 1、描述Tomcat应用服务器安装部署。 2、关于TOMCAT内存溢出及适当调整JVM内存大小。

    tomcat性能优化方式简单整理

    Tomcat内存优化 启动时告诉JVM我要一块大内存(调优内存是最直接的方式) 我们可以在 tomcat 的启动脚本 catalina.sh 中设置 java_OPTS 参数 JAVA_OPTS参数说明 server 启用jdk 的 server 版 Xms java虚拟机初始...

    tomcat性能优化

    通过优化tomcat提高网站的并发能力。 2.服务器资源 服务器所能提供CPU、内存、硬盘的性能对处理能力有决定性影响。 3.优化配置

    linux下tomcat优化设置最大连接数内存jconsole监控.docx

    linux下tomcat优化设置最大连接数内存jconsole监控.docx

Global site tag (gtag.js) - Google Analytics