tomcat的优化及多实例部署

这篇具有很好参考价值的文章主要介绍了tomcat的优化及多实例部署。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Tomcat的优化及多实例部署

一.Tomcat的优化

tomcat默认安装下的缺省配置并不适合生产环境,它可能会频繁出现假死现象需要重新启动,只有通过不断压测优化才能让它高效率稳定的运行,优化主要包括三方面:分别为操作系统优化(内核、参数优化)、tomcat配置文件参数优化、java虚拟机(JVM调优)

1.tomcat启动速度优化——random

第一次启动tomcat可能会发现tomcat启动很慢,默认情况下可能需要几十秒,可以修改jdk参数调优

vim /usr/java/jdk1.8.0-x64/jre/lib/security/java.security
--117行--修改
securerandom.source=file:/dev/urandom
# 关闭Tomcat 应用程序脚本。
/usr/local/tomcat/bin/shutdown.sh 
#开启Tomcat 应用程序脚本。
/usr/local/tomcat/bin/startup.sh 

random:随机生成数,urandom:关闭随机生成数,会使启动的速度更快

总:jdk默认的使用/dev/random,random采用的是阻塞方式生成随机数,生成的速度很慢

2.Tomcat配置文件参数优化

2.1 常用的优化相关参数

(1)redirectPort

如果某连接器支持的协议是HTTP,当接收客户端发来的HTTPS请求时,则转发至此属性定义的端口。

8080:tomcat的http默认监听端口

8443:https的默认端口默认不是开启的,开启去生成证书(ssl)

8005:用来关闭tomcat的服务端口,使用shutdown关闭的就是这个端口

8009:连接器的监听端口(负责和其他的http服务器建立连接),把tomcat与其他http服务集成时,就需要用到连接器

(2)maxThreads

Tomcat使用线程来处理接收的每个请求,这个值表示Tomcat可创建的最大的线程数,即支持的最大并发连接数,默认值是 200。(根据Tomcat的请求数量设置)

如tomcat挂了,服务正常起来:最大线程数的问题,查看是否超过了默认值或者自己设置的最大线程数

(3)minSpareThreads

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

平常设置50-80之间即可,设置的较大会浪费资源

(4)maxSpareThreads

最大备用线程数,一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。默认值是-1(无限制)。一般不需要指定。
(5)URIEncoding

指定 Tomcat 容器的 URL 编码格式,语言编码格式这块倒不如其它web服务器软件配置方便,需要分别指定。

一般是utf-8

(6)connectionTimeout

网络连接超时,单位:毫秒,设置为 0

表示永不超时,这样设置有隐患的。通常默认 20000 毫秒就可以。
(7)enableLookups

是否反查域名,以返回远程主机的主机名,取值为: true 或false,如果设置为 false,则直接返回 IP 地址,为了提高处理能力,应设置为 false。(如不是false会陷入循环)
(8)disableUploadTimeout

上传时是否使用超时机制。应设置为 true。
(9)connectionUploadTimeout

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

指定当所有可以使用的处理请求的线程数都被使用时,可传入连接请求的最大队列长度,超过这个数的请求将不予处理,默认为 100 个。如果超出默认值或者自己设置的值,将会丢弃。
(11)compression

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

(12)compressionMinSize

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

超过默认值才会开启压缩,低于不会压缩

(13)compressableMimeType

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

(14)noCompressionUserAgents=“gozilla,traviata”

对于以下的浏览器,不启用压缩

2.2 优化的配置文件

vim /usr/local/tomcat/conf/server.xml
. . . . . .
#端口
<Connector port="8080" protocol="HTTP/11.1"connectionTimeout="20000"
redirectPort="8443"
--71行--插入
#最小空闲线程数
minSpareThreads="50"
是否反查域名
enableLookups="false"
#上传时是否使用超时机制
disableUploadTimeout="true"
#指定当前所有可以使用处理请求的线程数
acceptCount="300"
#使用线程数来处理接受的每个请求
maxThreads="500"
#系统或程序可以使用 500 MB 的处理器(CPU)缓存空间,以提高程序的运行速度。
processorCache="500"
#指定tomcat容器的URL编码格式
URIEncoding="UTF-8"
#是否对响应的数据进行GZIP压缩
compression="on"
#压缩的最小值
compressionMinSize="2048"
#支持压缩类型
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain,image/gif,image /jpg,image/png"/>

二.Tomcat多实例部署

1.为什么会有tomcat多实例部署

高并发量的话一个tomcat只支持小部分,添加变成多实例部署会支持的更多,解决高并发的情况

多实例部署的时候端口一定要不一样,不然服务无法起来

2.多实例部署图示

tomcat的优化及多实例部署,tomcat,firefox,safari

3.多实例部署的配置

3.1 安装JDK

关闭防火墙,将安装 Tomcat 所需软件包传到/opt目录下

jdk-8u371-linux-x64.rpm
apache-tomcat-8.5.16.tar.gz 
 
systemctl stop firewalld
systemctl disable firewalld
setenforce 0

安装JDK

cd /opt
#先安装jdk
rpm -ivh jdk-8u371-linux-x64.rpm 
#查看Java的版本信息
java -version
rpm -qpl jdk-8u371-linux-x64.rpm

设置JDK环境变量

#使用脚本设置jdk的环境变量
vim /etc/profile.d/java.sh
#指定安装的包所在的路径家目录
export JAVA_HOME=/usr/java/jdk1.8.0-x64
#将 CLASSPATH 变量设置为当前目录、$JAVA_HOME/lib/tools.jar 和 $JAVA_HOME/lib/dt.jar 所代表的 Java 类文件搜索路径。
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
#指定变量,放入执行文件
export PATH=$JAVA_HOME/bin:$PATH

tomcat的优化及多实例部署,tomcat,firefox,safari

#读取脚本
source /etc/profile.d/java.sh
java -version

测试jdk是否安装成功

vim hello.java
public class hello {			
  public static void main(String[] args){
    System.out.println("Hello world!");
  }
}

tomcat的优化及多实例部署,tomcat,firefox,safari

3.2 安装启动Tomcat

cd /opt
tar zxvf apache-tomcat-8.5.16.tar.gz 
mkdir /usr/local/tomcat
mv apache-tomcat-8.5.16.tar.gz /usr/local/tomcat/tomcat1
cp -a /usr/local/tomcat/tomcat1 /usr/local/tomcat/tomcat2

#启动tomcat #
#后台启动
/usr/local/tomcat/bin/startup.sh 
或
/usr/local/tomcat/bin/catalina.sh start
	
#前台启动
/usr/local/tomcat/bin/catalina.sh run	
netstat -natp | grep 8080

tomcat的优化及多实例部署,tomcat,firefox,safari

3.3 配置 tomcat 环境变量

vim /etc/profile.d/tomcat.sh

#tomcat1
export CATALINA_HOME1=/usr/local/tomcat/tomcat1export CATALINA_BASE1=/usr/local/tomcat/tomcat1export TOMCAT_HOME1=/usr/local/tomcat/tomcat1
#tomcat2
export CATALINA_HOME2=/usr/local/tomcat/tomcat2export CATALINA_BASE2=/usr/local/tomcat/tomcat2export TOMCAT_HOME2=/usr/local/tomcat/tomcat2
source /etc/profile.d/tomcat.sh 

3.4 修改 tomcat2 中的 server.xml 文件,要求各 tomcat 实例配置不能有重复的端口号

首先检查local目录下是否已经有tomcat的文件,然后根据标准路径修改配置

tomcat的优化及多实例部署,tomcat,firefox,safari

vim /usr/local/tomcat2/conf/server.xml 
<Server port="8006"shutdown="SHOTDOWN">修改为8006port="8081" protocol="HTTP/1.1"<Connector默认为8080 -> 修改为8081<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />#116行,修改Connector port AJP/1.3,默认为8009 -> 修改为8010
#22行,修改Server prot,默认为8005 ->
#69行,修改Connector port,HTTP/1.1

第一个连接器默认监听8080端口,负责建立HTTP连接。在通过浏览器访问Tomcat服务器的web应用时使用的就是这个连接器。第二个连接器默认监听8009端口,负责和其他的HTTP服务器建立连接。在把Tomcat与其他HTTP服务器集成时,就需要用到这个连接器。

3.5 修改各 tomcat 实例中的 startup.sh 和 shutdown.sh 文件,添加 tomcat 环境变量

vim /usr/local/tomcat1/bin/startup.sh
# -----------------------------------------------------------------------------
# Stop script for the CATALINA Server
# -----------------------------------------------------------------------------
#添加以下的内容
export CATALINA_HOME1=/usr/local/tomcat/tomcat1
export CATALINA_BASE1=/usr/local/tomcat/tomcat1
export TOMCAT_HOME1=/usr/local/tomcat/tomcat1


vim /usr/local/tomcat1/bin/shutdown.sh
# -----------------------------------------------------------------------------
# Stop script for the CATALINA Server
# -----------------------------------------------------------------------------
#添加以下的内容
export CATALINA_HOME1=/usr/local/tomcat/tomcat1
export CATALINA_BASE1=/usr/local/tomcat/tomcat1
export TOMCAT_HOME1=/usr/local/tomcat/tomcat1
vim /usr/local/tomcat2/bin/startup.sh
# -----------------------------------------------------------------------------
# Start Script for the CATALINA Server
# -----------------------------------------------------------------------------
#添加以下的内容
export CATALINA_HOME2=/usr/local/tomcat/tomcat2
export CATALINA_BASE2=/usr/local/romcat/tomcat2
export TOMCAT_HOME2=/usr/local/tomcat/tomcat2
vim /usr/local/tomcat2/bin/shutdown.sh
# -----------------------------------------------------------------------------
# Stop script for the CATALINA Server
# -----------------------------------------------------------------------------
export CATALINA_HOME2=/usr/local/tomcat/tomcat2
export CATALINA_BASE2=/usr/local/romcat/tomcat2
export TOMCAT_HOME2=/usr/local/tomcat/tomcat2

3.6 启动各 tomcat 中的 /bin/startup.sh

/usr/local/tomcat1/bin/startup.sh
/usr/local/tomcat2/bin/startup.sh

tomcat的优化及多实例部署,tomcat,firefox,safari

#因为启动调用的是java,所以查的是java
netstat -natp | grep java

tomcat的优化及多实例部署,tomcat,firefox,safari

3.7 浏览器访问测试

http://192.168.168.10:8080/

http://192.168.168.10:8081/

tomcat的优化及多实例部署,tomcat,firefox,safari

三.扩展优化jvm

/bin/catalina.shserver:jvm的server工作模式,对应的有client工作模式。使用"java-version”可以查看当前工作模式
-Xms1024m:初始Heap大小,使用的最小内存-Xmx1024m: Java heap最大值,使用的最大内存。

经验:设置Xms大小等于Xmx大小-XX:NewSize=512m:表示新生代初始内存的大小,应该小于 -Xms的值-XX:MaxNewSize=1024M: 表示新生代可被分配的内存的最大上限,应该小于 -Xmx的值-xX:PermSize=1024m: 设定内存的永久保存区域,内存的永久保存区域,VM 存放CLass 和 Meta信息,JVM在运行期间不会清除该区域-XX:MaxPermsize=1024m: 设定最大内存的永久保存区域。经验:设置PermSize大小等于MaxPermSize大小、-XX:+DisableExplicitGC:自动将System.qc() 调用转换成一个空操作,即应用中调用System.qc()会变成一个空操作,避免程序员在代码里进行System.gc()这种危险操作。System.gc()除非是到了万不得也的情况下使用,都应该交给 JVM。

优化总结:

(1)提高tomcat效率:radom修改uradom启动速度

(2)连接器支持协议

(3)最大并发连接数:默认200,一般100,根据请求数量

(4)线程数最小空闲(默认值10),最大备用线程数(一般不指定)

(5)tomcat URL编码格式,需要自己设置:utf-8

(6)tomcat网络连接超时,默认值200s即可

(7)是否反查域名,false设置false为了提高处理能力

(8)tomcat超时机制,应为true,一定要开启,设置超时时间

(9)tomcat对数据是否进行压缩,on允许压缩,压缩大小默认2048,超过2048才会压缩

险操作。System.gc()除非是到了万不得也的情况下使用,都应该交给 JVM。

优化总结:

(1)提高tomcat效率:radom修改uradom启动速度

(2)连接器支持协议

(3)最大并发连接数:默认200,一般100,根据请求数量

(4)线程数最小空闲(默认值10),最大备用线程数(一般不指定)

(5)tomcat URL编码格式,需要自己设置:utf-8

(6)tomcat网络连接超时,默认值200s即可

(7)是否反查域名,false设置false为了提高处理能力

(8)tomcat超时机制,应为true,一定要开启,设置超时时间

(9)tomcat对数据是否进行压缩,on允许压缩,压缩大小默认2048,超过2048才会压缩

(10)tomcat对哪些类型的文件进行压缩(image、jpg、text、html、png)文章来源地址https://www.toymoban.com/news/detail-524905.html

到了这里,关于tomcat的优化及多实例部署的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何清除浏览器的 DNS 缓存 (Chrome, Firefox, Safari)

    如何清除浏览器的 DNS 缓存 (Chrome, Firefox, Safari) Chrome Chromium Edge Firefox Safari clear DNS Cache, flush DNS cache 请访问原文链接:https://sysin.org/blog/clear-browser-dns-cache/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org 天下只剩三种(主流)浏览器: Apple Safari Mozilla Firefox

    2024年02月11日
    浏览(46)
  • tomcat服务&&tomcat多实例部署

    Tomcat是一个开源的Java Servlet容器,可以作为Java Web应用程序的运行环境。它是Apache软件基金会的一个重要项目,具有高性能、稳定可靠以及跨平台等特点。它实现了Java Servlet和JavaServer Pages(JSP)规范,并提供了一个运行环境,使得Java代码可以在Web服务器上执行。 tomcat就是传

    2024年02月07日
    浏览(45)
  • tomcat部署、tomcat虚拟主机及tomcat多实例

    目录 一、Tomcat概述 tomcat是什么? 什么是 servlet? 什么是 JSP? Tomcat 功能组件结构 Container 结构分析 Tomcat 请求过程 二、Tomcat部署 1、关闭防火墙和selinux,并将Tomcat所需软件包传到/opt目录下 2、安装JDK 3、设置JDK环境变量 4、安装Tomcat,解压tomcat安装包,并将解压出来的文件复制

    2024年02月10日
    浏览(43)
  • tomcat安装、部署JSPGOU项目、Tomcat多实例

            安装 官网找包 Apache Tomcat® - Welcome! tomcat 8 准备运行环境 安装tomcat catalina.sh    服务脚本管理文件 server.xml 主配置文件 修改8009(删除注释) 启动tomcat 访问 为了避免每次进入绝对路径启动tomcat 法二: 单机架构:                 集群架构:                 jsp

    2024年02月09日
    浏览(35)
  • Tomcat站点部署与多实例配置

    上线的代码有两种方式: 第一种方式是直接将程序目录放在webapps目录下面,这种方式大家已经明白了,就不多说了。 第二种方式是使用开发工具将程序打包成war包,然后上传到webapps目录下面。 发布项目的流程应该不难,主要讲解一下里里面的一些简单配置 自定义默认网站

    2024年02月07日
    浏览(37)
  • Tomcat的动静分离以及多实例部署

    Nginx实现负载均衡的原理: Nginx实现负载均衡是通过反向代理实现Nginx服务器作为前端,Tomcat服务器作为后端,web页面请求由Nginx服务来进行转发。 但不是把所有的web请求转发,而是将静态页面请求Ncinx服务器自己来处理,动态页面请求,转发给后端的Tomcat服务器来处理。 To

    2024年02月13日
    浏览(34)
  • Tomcat多实例部署及nginx+tomcat的负载均衡和动静分离

    静:静态页面   动: 动态页面 分别可以对静态页面和动态页面发起不同的请求,会有不同的响应结果。 ngix反向代理——负均均衡——tomcat为后端服务器——web静态nginx——静态请求nginx——动态页面——tomcat Nginx实现负载均衡的原理 Nginx实现负载均衡是通过反向代理实现Ngi

    2024年02月13日
    浏览(48)
  • 【Tomcat】Tomcat部署及优化

    Tomcat         它是一个免费、开源的web应用服务器;基于java代码开发的软件;处理动态请求和基于Java代码的页面开发;         可以在html当中写入Java代码,Tomcat可以解析html页面当中的Java代码,执行动态请求以及动态页面          缺点 :机制有问题,如果不对To

    2024年02月13日
    浏览(33)
  • Nginx+Tomcat负载均衡、动静分离实例详细部署

    ●rr 轮询 负载均衡模式: 每个请求按时间顺序逐一分配到不同的后端服务器,如果超过了最大失败次数后(max_fails,默认1),在失效时间内(fail_timeout,默认10秒),该节点失效权重变为0,超过失效时间后,则恢复正常,或者全部节点都为down后,那么将所有节点都恢复为有效

    2024年02月13日
    浏览(41)
  • 多实例部署和Nginx+Tomcat负载均衡、动静分离

    目录 一、Tomcat多实例部署 1.安装好 jdk  2.安装 tomcat  3.配置 tomcat环境变量  4.修改 tomcat2 中的 server.xml文件,要求各 tomcat 实例配置不能有重复的端口号 5.修改各 tomcat 实例中的 startup.sh 和 shutdown.sh 文件,添加 tomcat 环境变量  6.启动各 tomcat 中的 /bin/startup.sh  7.浏览器访问测

    2024年02月12日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包