`
jiasongmao
  • 浏览: 670761 次
  • 性别: Icon_minigender_1
  • 来自: 石家庄
社区版块
存档分类
最新评论

tomcat优化配置参数

 
阅读更多

 

1、内存优化:

优化内存,主要是在bin/catalina.bat/sh 配置文件中进行。linux上,在catalina.sh中添加:

 

JAVA_OPTS="-server -Xms1G -Xmx2G -Xss256K -Djava.awt.headless=true -Dfile.encoding=utf-8 -XX:MaxPermSize=256m -XX:PermSize=128M -XX:MaxPermSize=256M"

   其中:

  • -server:启用jdk的server版本。
  • -Xms:虚拟机初始化时的最小堆内存。
  • -Xmx:虚拟机可使用的最大堆内存。 #-Xms与-Xmx设成一样的值,避免JVM因为频繁的GC导致性能大起大落
  • -XX:PermSize:设置非堆内存初始值,默认是物理内存的1/64。
  • -XX:MaxNewSize:新生代占整个堆内存的最大值。
  • -XX:MaxPermSize:Perm(俗称方法区)占整个堆内存的最大值,也称内存最大永久保留区域。

1)错误提示:java.lang.OutOfMemoryError:Java heap space

Tomcat默认可以使用的内存为128MB,在较大型的应用项目中,这点内存是不够的,有可能导致系统无法运行。常见的问题是报Tomcat内存溢出错误,Outof Memory(系统内存不足)的异常,从而导致客户端显示500错误,一般调整Tomcat的-Xms和-Xmx即可解决问题,通常将-Xms和-Xmx设置成一样,堆的最大值设置为物理可用内存的最大值的80%。

set JAVA_OPTS=-Xms512m-Xmx512m

2)错误提示:java.lang.OutOfMemoryError: PermGenspace

PermGenspace的全称是Permanent Generationspace,是指内存的永久保存区域,这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGenspace中,它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGenspace进行清理,所以如果你的应用中有很CLASS的话,就很可能出现PermGen space错误,这种错误常见在web服务器对JSP进行precompile的时候。如果你的WEB APP下都用了大量的第三方jar, 其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。解决方法:

set JAVA_OPTS=-XX:PermSize=128M

3)在使用-Xms和-Xmx调整tomcat的堆大小时,还需要考虑垃圾回收机制。如果系统花费很多的时间收集垃圾,请减小堆大小。一次完全的垃圾收集应该不超过3-5 秒。如果垃圾收集成为瓶颈,那么需要指定代的大小,检查垃圾收集的详细输出,研究垃圾收集参数对性能的影响。一般说来,你应该使用物理内存的 80% 作为堆大小。当增加处理器时,记得增加内存,因为分配可以并行进行,而垃圾收集不是并行的。

2、连接数优化:

#优化连接数,主要是在conf/server.xml配置文件中进行修改。

2.1、优化线程数

找到Connectorport="8080" protocol="HTTP/1.1",增加maxThreads和acceptCount属性(使acceptCount大于等于maxThreads),如下:

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" acceptCount="500" maxThreads="400" />

 其中:

  • maxThreads:tomcat可用于请求处理的最大线程数,默认是200
  • minSpareThreads:tomcat初始线程数,即最小空闲线程数
  • maxSpareThreads:tomcat最大空闲线程数,超过的会被关闭
  • acceptCount:当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理.默认100
2.2、使用线程池

在server.xml中增加executor节点,然后配置connector的executor属性,如下:

<Executor name="tomcatThreadPool" namePrefix="req-exec-" maxThreads="1000" minSpareThreads="50" maxIdleTime="60000"/>
<Connector port="8080" protocol="HTTP/1.1" executor="tomcatThreadPool"/>

 其中:

  • namePrefix:线程池中线程的命名前缀
  • maxThreads:线程池的最大线程数
  • minSpareThreads:线程池的最小空闲线程数
  • maxIdleTime:超过最小空闲线程数时,多的线程会等待这个时间长度,然后关闭
  • threadPriority:线程优先级

注:当tomcat并发用户量大的时候,单个jvm进程确实可能打开过多的文件句柄,这时会报java.net.SocketException:Too many open files错误。可使用下面步骤检查:

 

  • ps -ef |grep tomcat 查看tomcat的进程ID,记录ID号,假设进程ID为10001
  • lsof -p 10001|wc -l 查看当前进程id为10001的 文件操作数
  • 使用命令:ulimit -a 查看每个用户允许打开的最大文件数
3、Tomcat Connector三种运行模式(BIO, NIO, APR)
3.1、三种模式比较:

1)BIO:一个线程处理一个请求。缺点:并发量高时,线程数较多,浪费资源。Tomcat7或以下在Linux系统中默认使用这种方式。

2)NIO:利用Java的异步IO处理,可以通过少量的线程处理大量的请求。Tomcat8在Linux系统中默认使用这种方式。Tomcat7必须修改Connector配置来启动(conf/server.xml配置文件):

<Connector port="8080"protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000"redirectPort="8443"/>

 3)APR(Apache Portable Runtime):从操作系统层面解决io阻塞问题。Linux如果安装了apr和native,Tomcat直接启动就支持apr。

 

.2、apr模式

安装apr以及tomcat-native

yum -y install apr apr-devel

进入tomcat/bin目录,比如:

cd /opt/local/tomcat/bin/
tar xzfv tomcat-native.tar.gz
cd tomcat-native-1.1.32-src/jni/native
./configure --with-apr=/usr/bin/apr-1-config
make && make install

#注意最新版本的tomcat自带tomcat-native.war.gz,不过其版本相对于yum安装的apr过高,configure的时候会报错。

解决:yum remove apr apr-devel –y,卸载yum安装的apr和apr-devel,下载最新版本的apr源码包,编译安装;或者下载低版本的tomcat-native编译安装

安装成功后还需要对tomcat设置环境变量,方法是在catalina.sh文件中增加1行:

CATALINA_OPTS="-Djava.library.path=/usr/local/apr/lib"

#apr下载地址:http://apr.apache.org/download.cgi

#tomcat-native下载地址:http://tomcat.apache.org/download-native.cgi

修改8080端对应的conf/server.xml

protocol="org.apache.coyote.http11.Http11AprProtocol"

<Connector executor="tomcatThreadPool"
port="8080"
protocol="org.apache.coyote.http11.Http11AprProtocol"
connectionTimeout="20000"
enableLookups="false"
redirectPort="8443"
URIEncoding="UTF-8" />

PS:启动以后查看日志 显示如下表示开启 apr 模式

Sep 19, 2016 3:46:21 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-apr-8081"]

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    TOMCAT-5.5.X优化配置

    很好的TOMCAT-5.5.X优化配置文档,详细说明了各个的参数设置

    tomcat服务参数配置

    ### Tomcat服务参数配置详解 #### 一、Tomcat简介及安装 Tomcat是一款开源的Servlet容器,由Apache软件基金会下属的Jakarta项目开发。它实现了对Servlet和JavaServer Pages (JSP)技术的支持,并提供了作为Web...

    tomcat优化配置1

    Tomcat优化配置是提升Java应用程序性能的关键步骤,尤其是对于运行在Tomcat上的Web应用。本篇文章将详细讲解Tomcat的内存优化和连接器配置优化,帮助你确保服务器稳定且高效地运行。 首先,我们关注Tomcat的内存...

    tomcat GC 优化配置

    本文将详细介绍如何通过调整Tomcat启动参数来进行JVM的垃圾收集(GC)优化配置,提高Tomcat服务的稳定性和效率。 #### 二、基本概念与算法介绍 在深入探讨优化配置之前,我们首先了解一些基础的概念和算法: 1. *...

    tomcat及其配置文件

    总结来说,理解和掌握Tomcat的配置文件对于优化其性能、提升安全性以及解决故障至关重要。同时,了解如何在Linux环境下服务化Tomcat,可以提高运维效率,确保服务的稳定性和可靠性。在实际工作中,开发者和运维人员...

    Tomcat性能优化

    【标签】:“Tomcat优化”进一步确认了我们要关注的是Tomcat的整体优化策略,这包括但不限于启动速度、并发能力、内存使用效率等方面。 【文件】:“Tomcat7性能优化调优.docx”可能包含了关于Tomcat7性能优化的...

    Tomcat 安全配置与性能优化

    通过对Tomcat的内存配置、server.xml文件中的关键参数进行合理的调整和优化,可以显著提升Tomcat服务器的性能和稳定性。此外,合理的架构设计(如使用多个Tomcat实例并结合负载均衡技术)也是提高整体系统可靠性的...

    tomcat 启动优化和并发并发优化配置.rar

    《Tomcat启动优化与并发优化配置详解》 Tomcat,作为Java Web应用最常用的服务器,其性能优化对于提升系统整体效率至关重要。本文将深入探讨Tomcat的启动优化和并发优化配置,帮助开发者们更好地理解并实践这些关键...

    优化提高tomcat性能.Tomcat参数调优

    本篇文章将详细探讨如何通过调整Tomcat的配置参数来优化其性能。 首先,我们需要理解Tomcat的运行机制。Tomcat默认使用两种连接器:BIO(Blocking I/O)和NIO(Non-blocking I/O)。在`nginx+tomcat8开始默认NIO...

    apache-tomcat-8.5配置优化后

    Apache Tomcat 8.5是Java Servlet容器,...以上就是`apache-tomcat-8.5.5`配置优化后的关键点。正确调整这些设置能显著提升Tomcat的运行效率和服务质量。在实际部署时,还需要根据具体应用需求和服务器环境进一步微调。

    Tomcat配置方法 Tomcat配置方法 Tomcat配置方法

    本文将深入探讨Tomcat的配置方法,帮助你更好地理解和管理你的Web应用。 首先,让我们从基础开始,了解Tomcat的目录结构。在解压Tomcat安装包后,你会看到几个主要的目录和文件: 1. **bin**:包含启动和停止...

    tomcat8配置

    Tomcat的性能可以通过调整配置文件中的各种参数来优化,例如最大线程数、连接超时时间、缓存大小等。具体的优化策略需要根据实际应用场景和负载情况进行调整。 总结:配置Tomcat8不仅涉及安装、环境变量设置,还...

    liunx tomcat优化

    总结起来,Linux下的Tomcat优化涉及多个层面,包括JVM参数配置、系统调优、线程池管理和日志管理。通过精细调整这些方面,可以显著提升Tomcat的性能和稳定性,使其更好地服务于各种复杂的Web应用需求。

    Tomcat优化相关问题.pdf

    Tomcat 优化相关问题 Tomcat 优化是指对 Apache Tomcat 服务器进行性能调整和优化,以提高其处理请求的速度和效率。下面是 Tomcat 优化相关...Tomcat 优化需要根据实际情况进行调整和测试,以找到最合适的参数设置。

    Tomcat优化

    Tomcat优化是提升Java Web应用性能的关键步骤,特别是在使用Tomcat 7这个版本时,优化工作显得尤为重要。本文将深入探讨基于Tomcat 7的优化策略,包括配置调整、AJP连接器的禁用以及JVM参数的优化。 一、Tomcat配置...

    Tomcat服务器配置 视频教程 Tomcat视频

    10. **性能优化**:讨论如何调整JVM参数,如堆内存大小、垃圾收集策略,以及Tomcat的线程池设置,以提升服务器性能。 11. **故障排查**:学习如何通过日志、控制台输出以及服务器状态检查来诊断和解决常见的运行...

    tomcat日志切割和tomcat优化

    【标题】:Tomcat日志切割与Tomcat优化 【内容】: Tomcat作为流行的Java Servlet容器,其性能和日志管理是运维人员关注的重点。日志切割是保持日志文件大小合理、便于管理和分析的重要手段,而Tomcat优化则关乎...

    Tomcat-启动参数设置

    ### Tomcat 启动参数设置详解 #### 一、背景介绍 在部署Java Web应用程序时,经常使用Apache Tomcat作为应用服务器。然而,在高并发或大数据量处理的应用场景下,Tomcat可能会出现内存溢出等问题。为了提升Tomcat的...

Global site tag (gtag.js) - Google Analytics