首页 归档 关于 文件 Github
×

tomcat开启APR运行模式,优化并发性能 - Linux

2020-09-08 14:09:56
Tomcat
  • tomcat
本文总阅读量(次):
本文字数统计(字):1.8k
本文阅读时长(分):7

描述

Tomcat支持三种接收请求的处理方式:BIO、NIO、APR

BIO模式:阻塞式I/O操作,表示Tomcat使用的是传统Java I/O操作(即java.io包及其子包)。
Tomcat7以下版本默认情况下是以bio模式运行的,由于每个请求都要创建一个线程来处理,线程开销较大,不能处理高并发的场景,在三种模式中性能也最低。

NIO模式:是Java SE 1.4及后续版本提供的一种新的I/O操作方式(即java.nio包及其子包)。
是一个基于缓冲区、并能提供非阻塞I/O操作的Java API,它拥有比传统I/O操作(bio)更好的并发运行性能。
Tomcat8以上版本,默认使用的就是NIO模式,不需要额外修改。

APR模式:简单理解,就是从操作系统级别解决异步IO问题,大幅度的提高服务器的处理和响应性能, 也是Tomcat运行高并发应用的首选模式。

安装依赖

yum install -y apr-devel openssl-devel gcc make expat-devel libtool

下载软件

所需软件的下载地址:
https://mirrors.cnnic.cn/apache/apr/
https://tomcat.apache.org/download-native.cgi

点击下载:
https://mirrors.cnnic.cn/apache/apr/apr-1.7.0.tar.gz
https://mirrors.cnnic.cn/apache/apr/apr-iconv-1.2.2.tar.gz
https://mirrors.cnnic.cn/apache/apr/apr-util-1.6.1.tar.gz
https://mirrors.bfsu.edu.cn/apache/tomcat/tomcat-connectors/native/1.2.25/source/tomcat-native-1.2.25-src.tar.gz

安装软件

20200908153142

apr

cd /usr/local/tomcat/src/apr-1.7.0
./configure --prefix=/usr/local/tomcat/src/apr
make && make install

apr-iconv

cd /usr/local/tomcat/src/apr-iconv-1.2.2
./configure --with-apr=/usr/local/tomcat/src/apr --prefix=/usr/local/tomcat/src/apr-iconv
make && make install

apr-util

cd apr-util-1.6.1/
./configure --with-apr=/usr/local/tomcat/src/apr --with-apr-iconv=/usr/local/tomcat/src/apr-iconv/bin/apriconv --prefix=/usr/local/tomcat/src/apr-util
make && make install

tomcat-native

cd /usr/local/tomcat/src/tomcat-native-1.2.25-src/native
./configure --with-apr=/usr/local/tomcat/src/apr --with-java-home=/usr/local/java/jdk1.8.0_231
make && make install

profile

echo -e 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/tomcat/src/apr/lib\nexport LD_RUN_PATH=$LD_RUN_PATH:/usr/local/tomcat/src/apr/lib' >> /etc/profile
source /etc/profile

配置APR

打开 server.xml

vim /usr/local/tomcat/apache-tomcat-9.0.27/conf/server.xml

修改内容如下:

<Executor name="tomcatThreadPool" 
         namePrefix="catalina-exec-"
         maxThreads="300" 
         minSpareThreads="30"/>
​
<Connector executor="tomcatThreadPool" 
              port="8080" 
              protocol="org.apache.coyote.http11.Http11AprProtocol"
              connectionTimeout="20000"
              redirectPort="8443"
              acceptCount="900"
              disableUploadTimeout="true"
              URIEncoding="UTF-8"
              enableLookups="false"
              compression="on"
              compressionMinSize="1024"
              />
​
<!-- Define an AJP 1.3 Connector on port 8009 --> ##注释掉下面那行,如果不用apache
<!-- <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> -->

结果:
20200908160528
注:如果非root用户启动失败,把apr环境变量在当前用户的.bash_profile中写一份

配置说明

Executor参数说明

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

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

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

maxIdleTime:在Tomcat关闭一个空闲线程之前,允许空闲线程持续的时间(以毫秒为单位)。

            只有当前活跃的线程数大于minSpareThread的值,才会关闭空闲线程。默认值:60000(一分钟)。

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

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

Connector参数说明

maxThreads :Tomcat 使用线程来处理接收的每个请求,这个值表示 Tomcat 可创建的最大的线程数,默认值是 200

minSpareThreads:最小空闲线程数,Tomcat 启动时的初始化的线程数,表示即使没有人使用也开这么多空线程等待,默认值是 10。

maxSpareThreads:最大备用线程数,一旦创建的线程超过这个值,Tomcat 就会关闭不再需要的 socket 线程。
​
上边配置的参数,最大线程 500(一般服务器足以),要根据自己的实际情况合理设置,设置越大会耗费内存和 CPU,
因为 CPU 疲于线程上下文切换,没有精力提供请求服务了,最小空闲线程数 20,线程最大空闲时间 60 秒,
当然允许的最大线程连接数还受制于操作系统的内核参数设置,设置多大要根据自己的需求与环境。
当然线程可以配置在“tomcatThreadPool”中,也可以直接配置在“Connector”中,但不可以重复配置。
​
URIEncoding:指定 Tomcat 容器的 URL 编码格式,语言编码格式这块倒不如其它 WEB 服务器软件配置方便,需要分别指定。

connnectionTimeout: 网络连接超时,单位:毫秒,设置为 0 表示永不超时,这样设置有隐患的。通常可设置为 30000 毫秒,可根据检测实际情况,适当修改。

enableLookups: 是否反查域名,以返回远程主机的主机名,取值为:true 或 false,如果设置为false,则直接返回IP地址,为了提高处理能力,应设置为 false。

disableUploadTimeout:上传时是否使用超时机制。

connectionUploadTimeout:上传超时时间,毕竟文件上传可能需要消耗更多的时间,这个根据你自己的业务需要自己调,
            以使Servlet有较长的时间来完成它的执行,需要与上一个参数一起配合使用才会生效。

acceptCount:指定当所有可以使用的处理请求的线程数都被使用时,可传入连接请求的最大队列长度,超过这个数的请求将不予处理,默认为100个。

keepAliveTimeout:长连接最大保持时间(毫秒),表示在下次请求过来之前,Tomcat 保持该连接多久,默认是使用 connectionTimeout 时间,-1 为不限制超时。

maxKeepAliveRequests:表示在服务器关闭之前,该连接最大支持的请求数。
            超过该请求数的连接也将被关闭,1表示禁用,-1表示不限制个数,默认100个,一般设置在100~200之间。

compression:是否对响应的数据进行 GZIP 压缩,off:表示禁止压缩;on:表示允许压缩(文本将被压缩)、force:表示所有情况下都进行压缩,默认值为off,
            压缩数据后可以有效的减少页面的大小,一般可以减小1/3左右,节省带宽。

compressionMinSize:表示压缩响应的最小值,只有当响应报文大小大于这个值的时候才会对报文进行压缩,如果开启了压缩功能,默认值就是2048。

compressableMimeType:压缩类型,指定对哪些类型的文件进行数据压缩。

noCompressionUserAgents="gozilla, traviata": 对于以下的浏览器,不启用压缩。

如果已经对代码进行了动静分离,静态页面和图片等数据就不需要 Tomcat 处理了,那么也就不需要配置在 Tomcat 中配置压缩了。
完
tomcat开启APR运行模式,优化并发性能 - Windows
配置tomcat下的conf目录下的文件

本文标题:tomcat开启APR运行模式,优化并发性能 - Linux

文章作者:十二

发布时间:2020-09-08 14:09:56

最后更新:2021-03-10 14:07:26

原始链接:https://www.zhuqiaolun.com/2020/09/1599545396773/1599545396773/

许可协议:署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

头像

十二

我想起那天夕阳下的奔跑,那是我逝去的青春。

分类

  • Blog4
  • ElasticSearch13
  • Git2
  • Go-FastDfs2
  • IDEA2
  • J-Package6
  • J-Tools21
  • Java2
  • JavaFx3
  • Kafka4
  • Linux2
  • Logger5
  • Maven5
  • MyBatis6
  • MyCat3
  • MySql2
  • Nginx5
  • OceanBase1
  • RabbitMq4
  • Redis6
  • SVN1
  • SpringBoot14
  • Tomcat6
  • WebService2
  • Windows2
  • kubernetes10

归档

  • 六月 20251
  • 二月 20251
  • 十二月 20244
  • 八月 202416
  • 六月 20241
  • 九月 20231
  • 八月 20231
  • 七月 20232
  • 八月 20222
  • 三月 202214
  • 二月 20224
  • 十一月 20211
  • 七月 20215
  • 六月 20213
  • 五月 20213
  • 四月 20211
  • 三月 202116
  • 二月 20212
  • 一月 20211
  • 十一月 202014
  • 十月 20201
  • 九月 202014
  • 八月 20205
  • 七月 20204
  • 六月 20208
  • 五月 20208

作品

我的微信 我的文件

网站信息

本站运行时间统计: 载入中...
本站文章字数统计:97.8k
本站文章数量统计:133
© 2025 十二  |  鄂ICP备18019781号-1  |  鄂公网安备42118202000044号
驱动于 Hexo  | 主题 antiquity  |  不蒜子告之 阁下是第个访客
首页 归档 关于 文件 Github