Tomcat调优主要内容如下

一、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. 调整 JVM 参数 在 Tomcat 的 bin 目录下找到 catalina.sh(Linux)或 catalina.bat(Windows)文件,打开后找到 JAVA_OPTS 变量,设置对应的参数,例如: ``` export JAVA_OPTS="-server -Xms512m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=256m" ``` 2. 调整线程池参数 在 Tomcat 的 conf 目录下找到 server.xml 文件,找到对应的 Connector 元素,在其中添加对应的属性,例如: ``` <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" maxThreads="500" minSpareThreads="50" maxSpareThreads="200" enableLookups="false" acceptCount="500" disableUploadTimeout="true" /> ``` 3. 调整连接池参数 在 Tomcat 的 conf 目录下找到 context.xml 文件,找到对应的 Resource 元素,在其中添加对应的属性,例如: ``` <Resource name="jdbc/testdb" auth="Container" type="javax.sql.DataSource" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/test" username="root" password="123456" maxActive="100" maxIdle="20" minIdle="5" maxWait="-1"/> ``` 4. 开启压缩功能 在 Tomcat 的 conf 目录下找到 server.xml 文件,找到对应的 Connector 元素,在其中添加对应的属性,例如: ``` <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" compression="on" compressableMimeType="text/html,text/xml,text/css,text/javascript"/> ``` 5. 开启静态资源缓存 在 Tomcat 的 conf 目录下找到 web.xml 文件,找到对应的 mime-mapping 元素,在其中添加对应的属性,例如: ``` <mime-mapping> <extension>js</extension> <mime-type>application/javascript</mime-type> <cache-control>max-age=604800</cache-control> <etag>true</etag> </mime-mapping> ``` 以上是一些常用的 Tomcat 调优方法及对应的配置文件,具体的操作命令如下: 1. 修改 catalina.sh 或 catalina.bat 文件:使用 vim 或 notepad++ 等编辑器打开文件,找到 JAVA_OPTS 变量,设置对应的参数。 2. 修改 server.xml 文件:使用 vim 或 notepad++ 等编辑器打开文件,找到对应的 Connector 元素,添加对应的属性。 3. 修改 context.xml 文件:使用 vim 或 notepad++ 等编辑器打开文件,找到对应的 Resource 元素,添加对应的属性。 4. 修改 web.xml 文件:使用 vim 或 notepad++ 等编辑器打开文件,找到对应的 mime-mapping 元素,添加对应的属性。 5. 查看 Tomcat 日志:使用 tail -f logs/catalina.out 命令可以实时查看 Tomcat 的日志。 6. 重启 Tomcat:使用 ./catalina.sh restart 命令可以重启 Tomcat 服务。 以上命令仅供参考,具体的命令需要根据实际情况进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值