很全的Tomcat实战调优方案,提升性能必备

服务器
Tomcat的默认配置,性能并不是最优的,我们可以通过优化tomcat以此来提高网站的并发能力。提高Tomcat的性能可以分为两个方向。

 Tomcat的默认配置,性能并不是最优的,我们可以通过优化tomcat以此来提高网站的并发能力。提高Tomcat的性能可以分为两个方向。

服务器资源

服务器所能提供CPU、内存、硬盘的性能对处理能力有决定性影响,所以说服务器性能牛B,Tomcat也不会太差。当然提高服务器的硬件配置,是需要大量RMB的支持的。所以不到万不得已不会采用这种方式,一般公司会采取下面这种通过优化配置,来提升Tomcat性能的方式。

[[312808]]

优化配置

优化配置之前,我们需要配置一个tomcat管理员账户,来登录查看Tomcat控制台提高的各种参数。

在conf/ tomcat-users.xml下添加用户:

  1. <role rolename="manager"/><role rolename="manager-gui"/><role rolename="admin"/><role rolename="admin-gui"/><user username="tomcat" password="tomcat" roles="admin-gui,admin,manager-gui,manager"/> 

启动tomcat,登录查看信息:http://127.0.0.1:8080/

 

很全的Tomcat实战-调优方案,提升性能必备

 

 

很全的Tomcat实战-调优方案,提升性能必备

 

tomcat的3种运行模式

tomcat的运行模式有3种:

bio:

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

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)更好的并发运行性能。

apr:

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

启动NIO模式

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

 

很全的Tomcat实战-调优方案,提升性能必备

 

 

很全的Tomcat实战-调优方案,提升性能必备

 

执行器优化(线程池)

在tomcat中每一个用户请求都是一个线程,所以可以使用线程池提高性能。

开启并且使用

配置:

 

很全的Tomcat实战-调优方案,提升性能必备

 

在Connector中指定使用共享线程池

 

很全的Tomcat实战-调优方案,提升性能必备

 

查看Tomcat控制台

 

很全的Tomcat实战-调优方案,提升性能必备

 

Executor重要参数说明:

name:共享线程池的名字。这是Connector为了共享线程池要引用的名字,该名字必须唯一。默认值:None;

namePrefix:在JVM上,每个运行线程都可以有一个name 字符串。这一属性为线程池中每个线程的name字符串设置了一个前缀,Tomcat将把线程号追加到这一前缀的后面。默认值:tomcat-exec-;

maxThreads:该线程池可以容纳的最大线程数。默认值:200;

maxIdleTime:在Tomcat关闭一个空闲线程之前,允许空闲线程持续的时间(以毫秒为单位)。只有当前活跃的线程数大于minSpareThread的值,才会关闭空闲线程。默认值:60000(一分钟)。

minSpareThreads:Tomcat应该始终打开的最小不活跃线程数。默认值:25。

threadPriority:线程的等级。默认是Thread.NORM_PRIORITY

Connector重要参数说明:

executor:表示使用该参数值对应的线程池;

minProcessors:服务器启动时创建的处理请求的线程数;

maxProcessors:最大可以创建的处理请求的线程数;

acceptCount:指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理。

参数最佳实践

 

很全的Tomcat实战-调优方案,提升性能必备

 

 

很全的Tomcat实战-调优方案,提升性能必备

 

禁用AJP连接器

AJP(Apache JServer Protocol)

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

 

很全的Tomcat实战-调优方案,提升性能必备

 

我们一般是使用Nginx+tomcat的架构,所以用不着AJP协议,所以把AJP连接器禁用。

 

很全的Tomcat实战-调优方案,提升性能必备

 

在管理界面中看不到ajp了:

 

很全的Tomcat实战-调优方案,提升性能必备

 

完成上面几步对Tomcat的优化配置,你的Tomcat服务器并发量肯定会有大幅度的提升。这只是简单的配置,后续还会有针对JVM的专项介绍。JVM参数也是影响Tomcat性能的一个重要因素。

责任编辑:武晓燕 来源: 今日头条
相关推荐

2011-11-14 10:28:23

2017-07-21 08:55:13

TomcatJVM容器

2020-06-10 10:40:03

JavaJMH字符串

2020-08-18 13:50:04

Tomcat高并发Java

2022-09-14 22:58:58

Push 推荐Java 开发vivo

2013-02-28 13:37:59

系统性能调优技术实战

2010-05-05 14:04:31

Oracle 性能

2011-03-10 14:40:54

LAMPMysql

2020-04-15 19:53:49

TomcatApache内存

2018-05-09 08:35:59

2020-09-03 14:30:40

Tomcat 拆解调优

2012-06-20 11:05:47

性能调优攻略

2021-03-04 08:39:21

SparkRDD调优

2021-03-26 06:05:17

Tomcat

2014-04-24 10:11:17

iOS性能调优

2010-01-19 08:50:30

Web2.0网站性能调

2020-08-24 12:15:51

TomcatUndertow容器

2019-09-17 08:56:29

TomcatJVM性能

2020-11-30 11:40:35

NginxLinux性能调优

2011-05-20 15:02:01

Oracle性能调优
点赞
收藏

51CTO技术栈公众号