阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Tomcat调优

142次阅读
没有评论

共计 4165 个字符,预计需要花费 11 分钟才能阅读完成。

tomcat 的优化可以提高网站的并发能力,体现个人的价值,tomcat 在 java 项目中的使用率非常高,所以在生产环境对 tomcat 的优化也就变得非常必要了,一般情况下 tomcat 的优化主要从两个方面入手,一个是自身配置,另一个是 tomcat 所运行的 jvm 虚拟机的优化,优化的工作可以从安装完 tomcat 就开始着手

一、AJP 优化

在前面的课程中我们提到了一个叫 AJP 的协议,同时我们也知道了这个 AJP 的作用,但是在生产环境中一般使用的是 nginx+tomcat 的架构,所以大多数时候用不到 AJP 协议,所以我们可以禁用它,而在我们的 server.xml 文件中这个 AJP 默认就是禁用的, 如果是其它版本最好看一下

[root@zutuanxue conf]# vim /opt/tomcat1/conf/server.xml <!-- <Connector protocol="AJP/1.3" address="::1" port="8009" redirectPort="8443" /> -->

二、运行模式优化

tomcat 的运行模式有 3 种:

bio

性能非常低下,没有经过任何优化处理和支持,适用于连接数目比较小且固定的架构,这种方式对服务器资源要求比较高,并发局限于应用中,JDK1.4 以前的唯一选择,但程序直观简单易理解。

nio

nio(new I/O),是 Java SE 1.4 及后续版本提供的一种新的 I / O 操作方式它拥有比传统 I / O 操作 (bio) 更好的并发运行性能。Tomcat9 默认使用 nio 运行模式。适用于连接数目多且连接比较短(轻操作)的架构,比如聊天服务器,并发局限于应用中,编程比较复杂。AIO(NIO2)使用于连接数目多且连接比较长(重操作)的架构,比如相册服务器,充分调用 OS 参与并发操作,编程比较复杂,JDK7 开始支持。

apr

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

进入 tomcat 的服务器状态页面查看默认的模式

Tomcat 调优

如果默认使用的是 bio 模式

设置使用 nio 模式 [root@zutuanxue logs]# vim /opt/tomcat1/conf/server.xml <Connector port="8080"protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000" redirectPort="8443" />

apr 运行模式

APR(Apache portable Run-time libraries,Apache 可移植运行库)的目的如其名称一样,主要为上层的应用程序提供一个可以跨越多操作系统平台使用的底层支持接口库。可以大大地提高 Tomcat 对静态文件的处理性能。也是在 Tomcat 上运行高并发应用的首选模式。

系统自带的软件包不是最新的,且缺少相关软件包,所以我们选择源码包安装

所需软件包

apr-1.7.0.tar.gz 主程序包 包含了通用开发组件

apr-iconv-1.2.2.tar.gz 用于实现 iconv 编码

apr-util-1.6.1.tar.gz 额外的开发组件

tomcat-native.tar.gz 关联 tomcat 和 apr 的组件

arp 相关软件包下载 https://mirrors.cnnic.cn/apache/apr/

tomcat-native 在 tomcat 安装目录的 bin 下

部署 apr 环境

step 1 环境准备

[root@zutuanxue ~]# dnf install -y apr-devel openssl-devel gcc make expat-devel libtool

step 2 安装 apr 主程序包

[root@zutuanxue ~]# tar fx apr-1.7.0.tar.gz [root@zutuanxue ~]# cd apr-1.7.0/ [root@zutuanxue ~]# ./configure --prefix=/usr/local/apr [root@zutuanxue apr-1.7.0]# make -j4 && make install

step 3 安装 apr-iconv

[root@zutuanxue ~]# tar fx apr-iconv-1.2.2.tar.gz [root@zutuanxue ~]# cd apr-iconv-1.2.2/ [root@zutuanxue ~]# ./configure --with-apr=/usr/local/apr --prefix=/usr/local/apr-iconv [root@zutuanxue apr-iconv-1.2.2]# make -j4 && make install

step 4 安装 apr-util

[root@zutuanxue ~]# tar fx apr-util-1.6.1.tar.gz [root@zutuanxue ~]# cd apr-util-1.6.1/ [root@zutuanxue ~]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr --with-apr-iconv=/usr/local/apr-iconv/bin/apriconv [root@zutuanxue apr-util-1.6.1]# make -j4 && make install

step 5 安装 tomcat-native

[root@zutuanxue ~]# cd /opt/tomcat1/bin/ [root@zutuanxue bin]# tar fx tomcat-native.tar.gz [root@zutuanxue bin]# cd tomcat-native-1.2.23-src/native [root@zutuanxue tomcat-native-1.2.23-src]# ./configure --with-apr=/usr/local/apr --with-java-home=/usr/java/jdk-13.0.2 [root@zutuanxue tomcat-native-1.2.23-src]# make -j4 && make install

step 6 修改并加载环境变量

[root@zutuanxue ~]# echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib export LD_RUN_PATH=$LD_RUN_PATH:/usr/local/apr/lib' >> /etc/profile [root@zutuanxue ~]# source /etc/profile

step 7 修改 tomcat 配置文件

[root@zutuanxue ~]# vim /opt/tomcat1/conf/server.xml protocol="org.apache.coyote.http11.Http11AprProtocol" connectionTimeout="20000" redirectPort="8443" />

step 8 测试

# 为了避免干扰先执行关闭 [root@zutuanxue ~]# sh /opt/tomcat1/bin/shutdown.sh # 测试 [root@zutuanxue ~]# sh /opt/tomcat1/bin/catalina.sh run # 如果没有问题可以看到 14-Mar-2020 00:22:23.894 信息 [main] org.apache.coyote.AbstractProtocol.start 开始协议处理句柄["http-apr-8080"]

Tomcat 调优

注意:如果非 root 用户启动失败,把 apr 环境变量在当前用户的.bash_profile 中写一份 [root@zutuanxue ~]# echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib export LD_RUN_PATH=$LD_RUN_PATH:/usr/local/apr/lib' >> /root/.bash_profile [root@zutuanxue ~]# source /root/.bash_profile

其它优化参数

[root@zutuanxue logs]# vim /opt/tomcat1/conf/server.xml <Connector port="8080" protocol="HTTP/1.1 enableLookups="false"maxThreads="1000"minSpareThreads="100"acceptCount="900"disableUploadTimeout="true"connectionTimeout="20000"URIEncoding="UTF-8"redirectPort="8443"compression="on"compressionMinSize="1024"useSendfile="false"noCompressionUserAgents="mozilla, traviata"compressibleMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/javascript " /> maxThreads:最大线程数,默认 150。增大值避免队列请求过多,导致响应缓慢。minSpareThreads:最小空闲线程数。acceptCount:当处理请求超过此值时,将后来请求放到队列中等待。disableUploadTimeout:禁用上传超时时间 connectionTimeout:连接超时,单位毫秒,0 代表不限制 URIEncoding:URI 地址编码使用 UTF-8 enableLookups:关闭 dns 解析,提高响应时间 compression:启用压缩功能 compressionMinSize:最小压缩大小,单位 Byte compressibleMimeType:压缩的文件类型 官方参数文档:http://tomcat.apache.org/tomcat-9.0-doc/config/http.html

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-06-09发表,共计4165字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中