zoukankan      html  css  js  c++  java
  • Tomcat性能调优

    一、服务器资源

      服务器所能提供CPU、内存、硬盘的性能对处理能力有决定性影响。Tomcat性能可以通过提升服务器的性能来进行调优,但一般公司不会选择这种调优方式,而使用优化配置参数来调优。

    二、配置参数调优

    1. JVM参数调优,即Tomcat堆虚拟内存

    2、禁用DNS查询,打开压缩

    3、调整线程数 

    4、改变运行模式 

    5、禁用AJP连接器

    三、JVM参数调优

    -Xms<size>             表示JVM初始化堆的大小

    -Xmx<size>          表示JVM堆的最大值

    -Xss<size>           是指设定每个线程的堆栈大小。

    -XX:PermSize<size>      JVM初始分配的非堆内存
    -XX:MaxPermSize<size>       JVM最大允许分配的非堆内存,按需分配

    这两个值的大小一般根据需要进行设置。当应用程序需要的内存超出堆的最大值时虚拟机就会提示内存溢出,并且导致应用服务崩溃。因此一般建议堆的最大值设置为可用内存的最大值的80%。在catalina.bat中,设置JAVA_OPTS='-Xms256m -Xmx512m',表示初始化内存为256MB,可以使用的最大内存为512MB。

    四、禁用DNS查询,打开压缩

    A、禁用DNS查询

    为了消除DNS查询对性能的影响我们可以关闭DNS查询,方式是修改server.xml文件中的enableLookups参数值: 

    <Connector port="8080" enableLookups="false" redirectPort="8443"  /> 

    B、打开压缩

    1)compression=”on” 打开压缩功能

    2)compressionMinSize=”2048″ 启用压缩的输出内容大小,这里面默认为2KB

    3)noCompressionUserAgents=”gozilla, traviata” 对于以下的浏览器,不启用压缩

    4)compressableMimeType=”text/html,text/xml” 压缩类型

    <Connector port=”8080″ protocol=”HTTP/1.1″ compression=”on” compressionMinSize=”2048″ 
    compressableMimeType=”text/html,text/xml,text/javascript,text/css,text/plain” />

    五、调整线程数 

    Tomcat中可以通过修改minSpareThreads和maxSpareThreads的值来控制线程数。

    minSpareThreads      最小备用线程数,tomcat启动时的初始化的线程数

    maxSpareThreads     最大备用线程数,一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程

    maxThreads         tomcat起动的最大线程数,即同时处理的任务个数,默认值为200

    acceptCount         当tomcat起动的线程数达到最大时,接受排队的请求个数,默认值为100

    web server允许的最大连接数还受制于操作系统的内核参数设置,通常Windows是2000个左右,Linux是1000个左右。 

    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="150" minSpareThreads="4"/>
    <Connector executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

    六、改变运行模式 

    A、tomcat的3种运行模式

    (1)BIO
    默认的模式,性能非常低下,没有经过任何优化处理和支持.

    (2)NIO 
    NIO(new I/O),是Java SE 1.4及后续版本提供的一种新的I/O操作方式(即java.nio包及其子包)。Java nio是一个基于缓冲区、并能提供非阻塞I/O操作的Java API,因此nio也被看成是non-blocking I/O的缩写。它拥有比传统I/O操作(bio)更好的并发运行性能。

    (3)APR 
      安装起来最困难,但是从操作系统级别来解决异步的IO问题,大幅度的提高性能。

    B、优化运行模式选择

    (1)启动NIO模式

    修改server.xml里的Connector节点,修改protocol为org.apache.coyote.http11.Http11NioProtocol

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

    (2)启动APR模式

     安装apr,apr-iconv,apr-uitl,tomcat-native。添加环境变量LD_LIBRARY_PATH。

    修改server.xml配置文件中protocol修改成org.apache.coyote.http11.Http11AprProtocol

    <Connector port="8080" enableLookups="false" redirectPort="8443"  protocol="org.apache.coyote.http11.Http11AprProtocol"/> 

    七、禁用AJP连接器

      AJPv13协议是面向包的。WEB服务器和Servlet容器通过TCP连接来交互;为了节省SOCKET创建的昂贵代价,WEB服务器会尝试维护一个永久TCP连接到servlet容器,并且在多个请求和响应周期过程会重用连接。

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

  • 相关阅读:
    ES9新内容概括
    TensorFlow --- 01初识
    机器学习算法 --- SVM (Support Vector Machine)
    机器学习算法 --- Naive Bayes classifier
    机器学习算法 --- Pruning (decision trees) & Random Forest Algorithm
    机器学习算法 --- Decision Trees Algorithms
    机器学习算法 --- 逻辑回归及梯度下降
    机器学习算法 --- 线性回归
    机器学习基础 --- pandas的基本使用
    机器学习基础 --- numpy的基本使用
  • 原文地址:https://www.cnblogs.com/maokun/p/7502236.html
Copyright © 2011-2022 走看看