一、Tomcat调优主要内容如下:

1、增加最大连接数

配置过Tomcat的同学,应该都知道这个配置,好多地方也建议你,把这个配置调到最大(1000),如果服务器本身的性能允许的话
    - maxThreads:线程池中最大的线程数量
假设:请求的数量超过了“750”,这不是意味着将 maxThreads 属性值设置为“750”,它的最好解决方案是使用“Tomcat集群”。也就是说,如果有“1000”请求,两个 Tomcat 实例设置“maxThreads= 500”,而不是在单 Tomcat 实例的情况下设置 maxThreads=1000

2、调整工作模式

tomcat下工作模式有三种,bio nio apr

bio (blocking I/O):

即阻塞式I/O操作,表示Tomcat使用的是传统的Java I/O操作(即java.io包及其子包)。
      一个线程处理一个请求,缺点:并发量高时,线程数较多,浪费资源。

tomcat7及以下的版本默认的就是bio模式,在server.xml中的配置就是protocol=“HTTP/1.1”

nio (new I/O):

Java nio是一个基于缓冲区、并能提供非阻塞I/O操作的Java API,因此nio也被看成是non-blocking I/O的缩写。

它拥有比传统I/O操作(bio)更好的并发运行性能。
      利用 Java 的异步请求 IO 处理,可以通过少量的线程处理大量的请求。

tomcat8 及以上的版本默认就是这种模式,不需要额外的更改,如果tomcat7想用这种模式的话,就需要把protocol=“HTTP/1.1”

更改为: org.apache.coyote.http11.Http11NioProtocol即可

apr (Apache Portable Runtime/Apache可移植运行时):

Tomcat将以JNI的形式调用Apache HTTP服务器的核心动态链接库来处理文件读取或网络传输操作,从而大大地提高Tomcat对静态文件的处理性能。

Tomcat apr也是在Tomcat上运行高并发应用的首选模式。

要想Tomcat支持APR的工作模式,就需要提前安装好APR和native,下面会详细介绍这两个工具的安装
  3、启用gzip压缩

一般情况下,Tomcat不要这样做,为啥呢?因为前面有nginx,nginx做了就可以了
  4、调整JVM内存大小

先简单的说下jvm的作用,大家都知道(也有不知道的,嘿嘿),Java源代码(.java文件)经由源码编译器生成.class字节码文件,那么剩余的程序运行之后一系列

过程都是由jvm去完成的,所以可以得知jvm的重要性;在运维过程中jvm最容易出问题就是内存泄漏,常见的内存泄漏有两种:

4.1 Java.lang.OutOfMemoryError: PermGen(永久代) space

这块内存主要是被JVM存放Class、方法和属性值,Class在被Loader时就会被放到PermGen space中,所以如果你的应用中有很多CLASS的话,就很可能出现PermGen space错误,
      这种错误常见在web服务器对JSP进行pre compile的时候。如果你的WEB APP下都用了大量的第三方jar, 其大小
      超过了jvm默认的大小(4M)那么就会产生此错误信息了。
      解决方法: 手动设置MaxPermSize大小
      建议:将相同的第三方jar文件移置到tomcat/shared/lib目录下,这样可以达到减少jar 文档重复占用内存的目的。

4.2 java.lang.OutOfMemoryError: Java heap(堆内存) space

主要存放对象,垃圾收集器就是回收这些对象,然后是根据GC算法进行回收

这种内存溢出为堆内存溢出,其实跟上面那种溢出方式大同小异,都可以通过调整Tomcat的jvm参数来解决,具体的参数设置应该如下:

-Xms:初始堆的大小,应不大于物理内存的80%

-Xmx:最大堆的大小,应不大于物理内存的80%,这两个值应保持一致

-XX:PermSize 这个就是上面第一种错误设置的值,大小应不高于物理内存的7%

-XX:MaxPermSize 设置的最大的permsize的值应不大于物理内存的15%

服务器为64位、2G内存: JAVA_OPTS=‘-server -Xms1024m -Xmx1536m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m’

4.3 OutOfMemoryError: unable to create new native thread.

这种错误不太常见,但也是有可能,出现这种问题就稍微比较麻烦了,只是单纯的调大jvm参数,只会适得其反,这里我不过多的阐述,

只是告诫大家,出现这种错误的时候,不要加大jvm参数,要调小jvm参数,具体的标准,请自行查阅文章

这里说一下如果是其它的bug导致的内存泄漏,就要通过jstack、jmap、jstat自带的工具分析问题,定位到相关代码,让开发解决。
  5、作为Web时,动静分离

使用Apache或Nginx处理静态资源文件,Tomcat处理动态资源文件。因为Tomcat处理静态资源能力远不如Apache、Nginx,所以可以有效提高处理速度。

Tomcat调优主要内容如下相关推荐

  1. zz温故知新:Tomcat调优JVM内存性能调优

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

  2. tomcat调优-占用内存太多

    tomcat调优 前言 遇到一个问题,一台机器上启动tomcat占用内存太多 提示:以下是本篇文章正文内容,下面案例可供参考 一.tomcat优化配置参数 1.1 jvm内存 优化内存,主要是在bin ...

  3. Tomcat调优教程

    TIPS 本文基于Tomcat 9.0编写,理论兼容Tomcat 8.x及更高版本. Tomcat调优参数 主要调优参数 在做Tomcat的调优时,最重要是就是Connector(连接器)的调优了(少 ...

  4. Tomcat 调优教程

    点击上方 IT牧场 ,选择 置顶或者星标技术干货每日送达! TIPS 本文基于Tomcat 9.0编写,理论兼容Tomcat 8.x及更高版本. 本文来探讨Tomcat的调优. Tomcat调优参数 ...

  5. jvm与Tomcat调优【详解】——有这一篇就够了

    jvm与Tomcat调优 一.JVM性能调优 1.1 什么是JVM? 1.2 JVM调优工具 1.3 JVM调优经验 1.4常用JVM参数参考: 1.5 Java文件编译的过程 1.6 为什么说jav ...

  6. Java性能优化,操作系统内核性能调优,JYM优化,Tomcat调优

    文章目录 Java性能优化 尽量在合适的场合使用单例 尽量避免随意使用静态变量 尽量避免过多过常地创建Java对象 尽量使用final修饰符 尽量使用局部变量 尽量处理好包装类型和基本类型两者的使用场 ...

  7. tomcat优化(五)tomcat调优

    Tomcat 调优大致分为两大类: 1.Tomcat 的自身调优: 采用动静分离节约 Tomcat 的性能 禁用 AJP 连接器 调整 Tomcat 的线程池 调整 Tomcat 的连接器 修改 To ...

  8. Tomcat调优总结

    Tomcat 优化分为系统优化,Java虚拟机调优,Tomcat本身的优化. Tomcat 如何起停 ./catalina.sh stop ./catalina.sh start /sbin/serv ...

  9. tomcat调优之启动参数

    https://blog.csdn.net/xiaoyi23000/article/details/79448769 Linux系统中tomcat的启动参数 export JAVA_OPTS=&quo ...

最新文章

  1. java异常例子_java 异常的实例详解
  2. linux 6.8 dns,CentOS6.8下安装DNS服务器
  3. 【MySQL】MySQL的索引
  4. 中达变频器参数_台达变频器:满足未来驱动需求
  5. python教程:循环(while和for)
  6. Java技术分享:如何设计一个本地缓存?
  7. 关于pycharm deployment消失的问题
  8. python函数如何实现可变参数_【已解决】Python中实现可变参数的函数
  9. 步骤1:JMeter 录制脚本接口测试
  10. STM32CubeIDE教程-现场表达式切换数字进制表示
  11. (二)再议MII、RMII、GMII接口
  12. python写错了如何撤销-Python集成开发工具Pycharm的使用方法:复制,撤销上一步.......
  13. matlab中的点乘与不加点的乘
  14. 迅雷,快车,旋风下载地址加密和解密分析
  15. PHP面试-复习知识点整理
  16. WPF与3D 模型(一)把Solidworks里的模型导入进WPF程序
  17. 201819102040张辰飞
  18. 百度api文字转语音效果
  19. 交叉验证方法思想简介
  20. 长期盯屏幕 容易导致眼部疾病致失明

热门文章

  1. js获取近六个月时间
  2. 实训二十二:交换机标准 ACL 配置
  3. css实现文章首字下沉显示
  4. 突发!美国政府对阿里云开展“国家安全”审查
  5. 漏洞挖掘——实验12 Cross-Site Scripting (XSS) Attack Lab
  6. python sanic_Sanic + 前端MVVM 一种新一代Python高性能全栈开发实践
  7. 堆漏洞挖掘——__lib_malloc函数、_int_malloc函数、__lib_free函数源码详解
  8. 应用无法更新,新版本的的版本号(VersionCode)低于之前的版本
  9. 我的世界服务器修改生成怪物速度的文件,我的世界服务器禁止怪物生成指令大全...
  10. 极客日报第79期:腾讯回应两块八卖《鬼谷八荒》:已下架并退款;iMac Pro 售完即停产;iCloud 识别姓氏闹乌龙