博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
生产环境入门: Tomcat的基本优化【一】
阅读量:6520 次
发布时间:2019-06-24

本文共 3496 字,大约阅读时间需要 11 分钟。

hot3.png

java -Xms512m -Xmx512m -jar my.jar

Tomcat默认的配置已经是经过优化的了,留给我们可优化的空间很小,我     们主要能调整的是:跟具体使用场景相关的设置,大致有:

1:合理分配Tomcat需要的内存     这个是在启动Tomcat的时候设置catalina.sh中的JAVA_OPTS,常见设置如下:

(1)-server:启用JDK的Server版(2)-Xms:虚拟机初始化时的最小内存(3)-Xmx:虚拟机可使用的最大内存(建议到物理内存的80%)(4)-XX:PermSize:持久代初始值(5)-XX:MaxPermSize:持久代最大内存(默认是32M)(6)-XX:MaxNewSize:新生代内存的最大内存(默认是16M)

说明:

(1)一般设置-Xms、-Xmx相等以避免在每次GC后调整堆的大小。因为默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制

(2)察看配置是否生效:jmap  -heap  tomcat的进程号

2:Tomcat本身的配置优化     在server.xml中的  <Connector>中配置,常见设置如下:

(1)maxConnections  :最大连接数,对BIO模式,默认等于maxThreads  ;对NIO默认10000;     对APR/native默认8192(2)maxThreads:最大线程数,即同时处理的任务个数,默认值为200(3)acceptCount:当处理任务的线程数达到最大时,接受排队的请求个数,默认100(4)minSpareThreads:最小空闲线程数,默认10(5)compression  :设置是否开启GZip压缩(6)compressableMimeType:哪些类型需要压缩,默认是text/html,text/xml,text/plain(7)compressionMinSize:启用压缩的输出内容大小,默认为2048(8)enableLookups:是否反查域名,为了提高处理能力,应设置为  false(9)connectionTimeout:网络连接超时,单位毫秒。设置为  -1  表示永不超时,通常可设置  为2000毫秒。   说明:(1)如果要加大并发连接数,应同时加大maxThreads和acceptCount,可以两个设置一样(2)WebServer允许的最大连接数还受制于操作系统的内核参数设置,可通过ulimit  -a  查看(3)如果配置了
,在
中通过executor属性指定参照
,那么     
中关于线程的配置失效,以
中配置为准

3:关于BIO/NIO/APR

(1)BIO是最稳定最老的一个连接器,是采用阻塞的方式,意味着每个连接线程绑定到每个     Http请求,直到获得Http响应返回,如果Http客户端请求的是keep-Alive连接,那么这些     连接也许一直保持着直至达到timeout时间,这期间不能用于其它请求。(2)NIO是使用Java的异步IO技术,不做阻塞,要使用的话,直接修改server.xml里的     Connector节点,修改protocol为  :     protocol="org.apache.coyote.http11.Http11NioProtocol"(3)APR是使用原生C语言编写的非堵塞I/O,但是需要安装apr和native,直接启动就支持     apr,能大幅度提升性能。使用时指定protocol为     protocol=“org.apache.coyote.http11.Http11AprProtocol”  。     可以到http://apr.apache.org/download.cgi去下载,大致的安装步骤如下:A:安装apr     ./configure  --prefix=/usr/local/apr     make    make  installB:安装apr-iconv     ./configure  --prefix=/usr/local/apr-iconv  --with-apr=/usr/local/aprmake make installC:安装apr-util     ./configure  --prefix=/usr/local/apr-util  --with-apr=/usr/local/apr  --with-apr-     iconv=/usr/local/apr-iconv/bin/apriconv     make    make  installD:安装tomcat-native  ,就在Tomcat的bin下自带     tar  zxvf  tomcat-native.tar.gz     cd  tomcat-native-1.1.29-src/jni/native     ./configure  --with-apr=/usr/local/apr     make    make  install E:设置  apr  的环境变量     进入Tomcat的bin路径下,打开catalina.sh,在文件的#!/bin/sh下添加如下内容:     LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib  export  LD_LIBRARY_PATH             这样就只是给这个TOMCAT添加了APR,不破坏其它TOMCAT的配置 G:重新启动Tomcat,查看日志信息,应该有类似如下的信息:     org.apache.catalina.core.AprLifecycleListener.init  Loaded  APR  based  Apache     Tomcat  Native  library  1.1.29  using  APR  version  1.5.0.

 

优化主要是对Tomcat做的,主要有几方面:

1、在bin/catalina.bat文件中加入下面参数,对JVM进行优化,至于这一大驼参数的作用及说明,大家到网上找找,应该有很多的,如:

set JAVA_OPTS=-server -Xms1000M -Xmx1000M   #-Xms与-Xmx设成一样的值,避免JVM因为频繁的GC导致性能大起大落-Xss512k -XX:+AggressiveOpts -XX:+UseBiasedLocking -XX:PermSize=64M -XX:MaxPermSize=300M -XX:+DisableExplicitGC -XX:MaxTenuringThreshold=31 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC  -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m  -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -Djava.awt.headless=true

上述这样的配置,基本上可以达到:系统响应时间增快,JVM回收速度增快同时又不影响系统的响应率

,JVM内存最大化利用,线程阻塞情况最小化.

Tomcat连接参数的优化,主要是针对吞吐量做优化:

修改conf/server.xml文件,把原来

 

修改协议,修改最大线程,开启tomcat的gzip等等

改成下面的内容

长连接和短连接的性能测试:

tomcat长连接、短连接配置及用途:

什么时候用长连接,短连接?(下面博文最后面)

Tomcat的四种基于HTTP协议的Connector性能比较:

Tomcat 7优化前及优化后的性能对比:

转载于:https://my.oschina.net/u/1266221/blog/753004

你可能感兴趣的文章
.NET MVC5+ Dapper+扩展+微软Unity依赖注入实例
查看>>
INSTALL_FAILED_USER_RESTRICTED
查看>>
iToolkit,推荐我们自己做的一套前端组件
查看>>
Junit源码阅读(一)
查看>>
JavaScript设计模式与开发实践 | 01 - 面向对象的JavaScript
查看>>
捷信达酒店管理系统使用说明
查看>>
使用java api 创建excel内容并发送邮件
查看>>
Unity3d删除无用的美术资源轻量级插件
查看>>
Nginx 性能优化(学习笔记二十五)
查看>>
Strategy for Python Challenge(01)
查看>>
Spring事务异常回滚,try catch 捕获异常不回滚
查看>>
钢管识别项目1
查看>>
iOS的@try、@catch()
查看>>
中科院院士谭铁牛:人工智能发展需要理性务实
查看>>
真正的开源与人造开源之间的斗争愈演愈烈
查看>>
Coding and Paper Letter(十七)
查看>>
ES6特性之:模板字符串
查看>>
NIO框架入门(四):Android与MINA2、Netty4的跨平台UDP双向通信实战
查看>>
Netflix如何节省92%视频编码成本?
查看>>
ios兼容iphonex刘海屏解决方案
查看>>