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

Tomcat调优

414次阅读
没有评论

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

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19350
评论数
4
阅读量
7968762
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
星哥带你玩飞牛NAS-14:解锁公网自由!Lucky功能工具安装使用保姆级教程

星哥带你玩飞牛NAS-14:解锁公网自由!Lucky功能工具安装使用保姆级教程

星哥带你玩飞牛 NAS-14:解锁公网自由!Lucky 功能工具安装使用保姆级教程 作为 NAS 玩家,咱们最...
星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛 NAS 硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话? 前言 在选择 NAS 用预...
星哥带你玩飞牛NAS-4:飞牛NAS安装istore旁路由,家庭网络升级的最佳实践

星哥带你玩飞牛NAS-4:飞牛NAS安装istore旁路由,家庭网络升级的最佳实践

星哥带你玩飞牛 NAS-4:飞牛 NAS 安装 istore 旁路由,家庭网络升级的最佳实践 开始 大家好我是...
星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛 NAS 硬件 02:某鱼 6 张左右就可拿下 5 盘位的飞牛圣体 NAS 前言 大家好,我是星...
星哥带你玩飞牛NAS-8:有了NAS你可以干什么?软件汇总篇

星哥带你玩飞牛NAS-8:有了NAS你可以干什么?软件汇总篇

星哥带你玩飞牛 NAS-8:有了 NAS 你可以干什么?软件汇总篇 前言 哈喽各位玩友!我是是星哥,不少朋友私...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
150元打造低成本NAS小钢炮,捡一块3865U工控板

150元打造低成本NAS小钢炮,捡一块3865U工控板

150 元打造低成本 NAS 小钢炮,捡一块 3865U 工控板 一块二手的熊猫 B3 工控板 3865U,搭...
12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换...
星哥带你玩飞牛NAS硬件03:五盘位+N5105+双网口的成品NAS值得入手吗

星哥带你玩飞牛NAS硬件03:五盘位+N5105+双网口的成品NAS值得入手吗

星哥带你玩飞牛 NAS 硬件 03:五盘位 +N5105+ 双网口的成品 NAS 值得入手吗 前言 大家好,我...
每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站 - 手机博物馆 -CHAZ 3D Experience 一句话介绍:一个用 3D 方式重温...
三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

  三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Andr...