前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Tomcat调优

Tomcat调优

作者头像
星哥玩云
发布2022-09-15 16:25:56
4600
发布2022-09-15 16:25:56
举报
文章被收录于专栏:开源部署

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

一、AJP优化

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

代码语言:javascript
复制
 [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的服务器状态页面查看默认的模式

image20200313202144717.png
image20200313202144717.png

如果默认使用的是bio模式

代码语言:javascript
复制
设置使用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 环境准备

代码语言:javascript
复制
[root@zutuanxue ~]# dnf install -y apr-devel openssl-devel gcc make expat-devel libtool 

step 2 安装apr主程序包

代码语言:javascript
复制
[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

代码语言:javascript
复制
[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

代码语言:javascript
复制
[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

代码语言:javascript
复制
[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 修改并加载环境变量

代码语言:javascript
复制
[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配置文件

代码语言:javascript
复制
[root@zutuanxue ~]# vim /opt/tomcat1/conf/server.xml 
   protocol="org.apache.coyote.http11.Http11AprProtocol"
               connectionTimeout="20000"
               redirectPort="8443" />

step 8 测试

代码语言:javascript
复制
#为了避免干扰先执行关闭
[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"]
image20200314122328676.png
image20200314122328676.png
代码语言:javascript
复制
注意:如果非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

其它优化参数

代码语言:javascript
复制
[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
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、AJP优化
  • 二、运行模式优化
    • apr运行模式
      • 部署apr环境
        • 其它优化参数
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档