Tomcat目录结构

并发优化
1、打开tomcat安装目录\conf\server.xml文件,配置Connector,定位到这一行:
<Connector port=“8080” protocol=“HTTP/1.1”
在server.xml中 有以下配置:

参数说明:
maxThreads 客户请求最大线程数
minSpareThreads Tomcat初始化时创建的 socket 线程数
maxSpareThreads Tomcat连接器的最大空闲 socket 线程数
enableLookups 若设为true, 则支持域名解析,可把 ip 地址解析为主机名
redirectPort 在需要基于安全通道的场合,把客户请求转发到基于SSL 的 redirectPort 端口
acceptAccount 监听端口队列最大数,满了之后客户请求会被拒绝(不能小于maxSpareThreads )
connectionTimeout 连接超时
minProcessors 服务器创建时的最小处理线程数
maxProcessors 服务器同时最大处理线程数
URIEncoding URL统一编码

内存优化
主要是针对jvm各个内存大小的分配进行优化,以提高内存的使用率和减少资源变化带来的时间消耗。
Tomcat 的启动参数位于tomcat的安装目录\bin目录下。
Linux操作系统改动catalina.sh文件,Windows操作系统改动catalina.bat文件

常用的修改配置(根据实际情况进行设置)
JAVA_OPTS="-server -Xms2048M -Xmx2048M -XX:PermSize=256M -XX:MaxPermSize=512M ”

tomcat的启动参数:
-server:启用jdk得server版本
该参数的作用:tomcat默认以java –client方式运行, 添加server参数将tomcat切换为生产模式,使得tomcat能支持更高的并发数和吞吐量.
-Xms:虚拟机初始化时的最小堆内存
-Xmx:虚拟机可使用的最大堆内存
Xms是JVM初始化时的内存大小;Xmx是jvm的最大内存大小。Xms默认是物理内存的1/64,Xmx默认是物理内存的1/4,建议是物理内存的80%,但是一般我们会把Xms和Xmx设置一样大,这样在服务器启动时就是最大值可以避免内存膨胀和回落时带来的资源的消耗。特别是回落时会带来cpu的高速运转进行垃圾回收,系统可能会出现几秒甚至几十秒的卡顿现象。
如何设置Xmx?
输入命令:java - Xmx1500m –version
常显示JDK的版本信息,说明值能够

显示不出版本说明值不可用
-XX:PermSize: 设置非堆内存初始值,默认是物理内存的1/64。
-XX:MaxPermSize: 最大非堆内存的大小,默认是物理内存的1/4。
如果是物理内存4GB,-XX:PermSize就是64MB,这就是PermSize默认值,也就是永生代内存初始大小,四分之一是1024MB,这就是MaxPermSize默认大小
在数据量的很大的文件导出时,一定要把这两个值设置上,否则会出现内存溢出的错误。

-XX:MaxNewSize: 新生代占整个堆内存的最大值
–Xmn
是年轻代大小。整个堆大小=年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。
-Xss
是指设定每个线程的堆栈大小。这个就要依据你的程序,看一个线程 大约需要占用多少内存,可能会有多少线程同时运行等。一般不易设置超过1M,要不然容易出现out ofmemory。

线程池优化
在tomcat中每一个用户请求都是一个线程,所以可以使用线程池提高性能,使用线程池可以使多连接公用线程,避免线程的频繁的创建和销毁带来的资源消耗。
配置executor属性,打开/conf/server.xml文件,在Connector之前配置一个线程池。

重要参数说明:
executor:表示使用该参数值对应的线程池;
minProcessors:服务器启动时创建的处理请求的线程数;
maxProcessors:最大可以创建的处理请求的线程数;
acceptCount:指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理。

I0模式的优化
BIO:BIO(Blocking I/O):即阻塞式I/O操作,表示Tomcat使用的是传统的Java I/O操作(即java.io包及其子包)。Tomcat在默认情况下,是以bio模式运行的。遗憾的是,就一般而言,bio模式是三种运行模式中性能最低的一种。BIO配置采用默认即可。适用于连接数目比较小且固定的架构,处理简单流程,如程序处理较快可以立即返回结果,这种方式对服务器资源要求比较高,并发局限于应用中,JDK1.4以前的唯一选择,但程序直观简单易理解.
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)更好的并发运行性能。适用于连接数目多且连接比较短(轻操作)的架构,比如聊天服务器,并发局限于应用中,编程比较复杂,JDK1.4开始支持;更适合后台需要耗时完成请求的操作,如程序接到了请求后需要比较耗时的处理这已请求,所以无法立即返回结果,这样如果采用BIO就会占用一个连接,而使用NIO后就可以将此连接转让给其他请求,直至程序处理完成返回为止。
APR:APR(Apache Portable Runtime/Apache可移植运行时):是Apache HTTP服务器的支持库。你可以简单地理解为:Tomcat将以JNI的形式调用 Apache HTTP服务器的核心动态链接库来处理文件读取或网络传输操作,从而大大地提高 Tomcat对静态文件的处理性能。可以大大提升Tomcat对静态文件的处理性能,同时如果你使用了HTTPS方式传输的话,也可以提升SSL的处理性能;连接数目多且连接比较长(重操作)的架构,比如相册服务器,充分调用OS参与并发操作,编程比较复杂,JDK7开始支持.
修改IO模式:

  从上面代码可以看出修改io模式其实就是修改connector标签中的protocol属性的值,其他几种io模式对应的值如下:
//BIO
protocol=“HTTP/1.1”
//NIO
protocol=“org.apache.coyote.http11.Http11NioProtocol”
//NIO2
protocol=“org.apache.coyote.http11.Http11Nio2Protocol”
//APR
protocol=“org.apache.coyote.http11.Http11AprProtocol”

监听器Listener配置
另一个影响Tomcat 性能的因素是内存泄露。Server标签中可以配置多个Listener,其中 JreMemoryLeakPreventionListener是用来预防JRE内存泄漏。此Listener只需在Server标签中配置即可,默认情况下无需配置,已经添加在 Server中

tomcat如何调优相关推荐

  1. Tomcat(五):Tomcat 参数调优教程

    TIPS 本文基于Tomcat 9.0编写,理论兼容Tomcat 8.x及更高版本. 本文来探讨Tomcat的调优. Tomcat调优参数 主要调优参数 在做Tomcat的调优时,最重要是就是Conn ...

  2. tomcat jsvc 调优及JMX监控

    Tomcat  jsvc 调优及JMX监控 实验背景 ====================================================== 系统版本:CentOS releas ...

  3. 小计Tomcat的调优思路

    描述 最近在补充自己的短板,刚好整理到Tomcat调优这块,基本上面试必问,于是就花了点时间去搜集一下tomcat调优 都调了些什么,先记录一下调优手段,更多详细的原理和实现以后用到时候再来补充记录, ...

  4. 让你眼前一亮的3. Tomcat 性能调优 (值得收藏)

    目录 3. Tomcat 性能调优3.1 Tomcat 性能测试3.2 Tomcat 性能优化3.2.1Tomcat配置调优1.禁用AJP连接2.Connector 连接器的选择3.Executor线 ...

  5. tomcat 性能调优

    tomcat 性能调优 *************** tomcat 调优 ServerProperties:server 配置,直接在配置文件(application.yml)中设置 @Config ...

  6. tomcat jvm调优

    JVM调优总结 堆(Heap)内存和非堆(Non-heap)内存 堆内存就是Java代码的,留给开发人员使用: 非堆内存是留给JVM自己使用的(方法区.JVM内部处理或优化所需要的内存.每个类结构以及 ...

  7. 【转】tomcat性能调优

    一.总结前一天的学习 从"第三天"的性能测试一节中,我们得知了决定性能测试的几个重要指标,它们是: ü   吞吐量 ü   Responsetime ü   Cpuload ü   ...

  8. 通向架构师的道路(第四天)之Tomcat性能调优-让小猫飞奔

    一.总结前一天的学习 从"第三天"的性能测试一节中,我们得知了决定性能测试的几个重要指标,它们是: ü   吞吐量 ü   Responsetime ü   Cpuload ü   ...

  9. tomcat提高图片服务器性能,Tomcat性能调优(windows)

    1.目录: a.基础调优 b.JVM 优化 c.高级调优 2.基础调优: 2.1.tomcat的各版本的优化参数有点不一样,可以启动tomcat之后访问[http://127.0.0.1:8080/d ...

  10. win7查看tomcat端口_想研究Tomcat性能调优,看这篇就够了

    一.下载地址 https://tomcat.apache.org/download-80.cgi 二.安装步骤 将安装包 apache-tomcat-8.5.39.tar.gz 上传至服务器 /usr ...

最新文章

  1. 新视界,你好!_只愿与一人十指紧扣_新浪博客
  2. PCIE 硬件接口那点屁事
  3. 程序员随笔:使用来自服务器的图像(有源码)
  4. java可比较的和比较器的区别_Java中Compareable和Comparator两种比较器的区别
  5. 【嵌入式】C语言程序调试和宏使用的技巧
  6. 程序员过关斩将--redis做消息队列,香吗?
  7. [渝粤教育] 西南科技大学 理论力学 在线考试复习资料
  8. dataset.xsd的定义(vs2008)
  9. Linux创始人数据结构,Linux 通用数据结构说明
  10. RabbitMQ入门学习系列(三).消息发送接收
  11. splitlines
  12. 我国自主开发的编程语言“木兰”是又一个披着“洋”皮的红芯浏览器吗?
  13. 【深度学习】CNN算法
  14. Android studio安装,提示haxm device is not found 需要下载微软补丁 完美解决
  15. 全国省市区区划代码以及邮政编码数据最新版--Mysql版(下)
  16. 刚安装完成的Jmeter5打开之后没有工作台
  17. linux free命令详解
  18. 华为认证到底值不值得考?
  19. 害怕疼痛不想打胰岛素无针注射器能减少注射时带来的疼痛
  20. uni-app和vue什么关系?

热门文章

  1. 据说,年薪百万的程序员,都是这么开悟的
  2. 鸿蒙系统运行内存为啥只有8g,明明8G内存,系统却显示只有4G!为啥会这样?
  3. 初读Geoffrey Hinton颠覆之作《Dynamic Routing Between Capsules》
  4. linux do_irq 报错 代码,linux-2.6.38中断机制分析—asm_do_IRQ
  5. Socket心跳包机制总结
  6. 清默网络——我的CCIE考试经验与心得(2)
  7. iOS 获取手机型号信息大全
  8. 【例题 7-11 UVA - 12325】Zombie's Treasure Chest
  9. 2.11 循环赛日程表
  10. supervisor的用法