企业网站架构部署与优化之Tomcat部署及优化

目录

1.1 Tomcat概述

        1.1.1 Tomcat介绍

        1.1.2 Tomcat核心组件

        1.1.3 Tomcat请求处理

1.2 Tomcat服务部署

        1.2.1 下载并安装JDK

        1.2.2 安装启动Tomcat

                1. 安装Tomcat服务

                2. 优化Tomcat服务启动时间

                3. Tomcat目录结构

1.3 Tomcat配置与优化

        1.3.1 虚拟主机配置

                1. 创建www和bbs项目目录和文件

                2. 修改Tomcat主配置文件

                3. 虚拟主机访问测试

        1.3.2 Tomcat优化

                1. Tomcat配置文件参数优化

                2. jmeter压测工具

                3. Java虚拟机(JVM)调优

1.4 常见错误说明


1.1 Tomcat概述

        自2017年11月编程语言排行榜Java占比13%,高居榜首,Tomcat也一度成为Java开发人员的首选。其开源、占用系统资源少、跨平台等特性深受广大程序员喜爱。本章主要学习如何部署Tomcat服务,根据生产环境实现多个虚拟主机的配置,最后的重点是进行压测,根据压测结果如何优化Tomcat服务及常见的内存溢出如何处理。

        1.1.1 Tomcat介绍

        自从JSP发布之后,推出了各式各样的JSP引擎。Apache Group在完成GNUJSP1.0的开发以后,开始考虑在 SUN的JSWDK基础上开发一个可以直接提供 Web服务的JSP服务器,当然同时也支持 Servlet,这样Tomcat就诞生了。

        Tomcat是 Apache 软件基金会(Apache Software Foundation) Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。其被JavaWorld杂志的编辑选为2001年度最具创新的Java产品,同时它又是 Sun公司官方推荐的Servlet和JSP容器,因此Tomcat越来越多的受到软件公司和开发人员的喜爱。由于有了Sun 的参与和支持,最新的Servlet和JSP规范总是能在Tomcat中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0规范。因为Tomcat技术先进、性能稳定、免费,因而深受Java爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web应用服务器。

        Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上,Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当运行Tomcat时,它实际上作为一个与Apache独立的进程单独运行的。

        当配置正确时,Apache 为HTML页面服务,而 Tomcat实际上运行JSP页面和Servlet。Tomcat和lIlS 等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat 处理静态HTML的能力不如Apache服务器。

        1.1.2 Tomcat核心组件

        通常意义上的Web服务器接受请求后,只是单纯地响应静态资源(如HTML文件、图片文件等),不能在后端进行一定的处理操作。Tomcat 是 Apache 下的一个子项目,它具备Web服务器的所有功能,不仅可以监听接受请求并响应静态资源,而且可以在后端运行特定规范的Java代码 Servlet,同时将执行的结果以HTML代码的形式返回客户端。

        Tomcat由一系列的组件构成,其中核心的组件有三个。

        1.1.3 Tomcat请求处理

        Tomcat具体的处理请求过程如下所示。

1.2 Tomcat服务部署

        1.2.1 下载并安装JDK

        在部署Tomcat服务之前需要先部署好实验环境,本章实验环境的具体要求如表8-1所示。

        在部署Tomcat之前必须安装好JDK,因为JDK是 Tomcat运行的必要环境。JDK的安装相对比较简单,版本有很多,本章选择基于linux64位.RPM版本。

        下载完安装包后,将其上传到服务器/root目录下,执行安装命令。

        上面显示安装完成,jdk 安装目录在/lusrljavaljdk1.8.0_171-amd64,,编辑/etc/profile文件,设置jdk的环境变量。具体操作如下。

        1.2.2 安装启动Tomcat

                1. 安装Tomcat服务

        从Tomcat官网下载apache-tomcat-9.0.8.tar.gz稳定版本,将安装包解压后移动Tomcat目录到/usr/local下面,然后执行/usrlocal/tomcat/bin/startup.sh命令启动Tomcat即可。具体操作如下。

        浏览器打开 http://192.168.9.236:8080进行访问会出现Tomcat主页,如图8.1所示。

                2. 优化Tomcat服务启动时间

        查看日志会发现Tomcat 第一次启动很慢,默认情况下都需要几十秒。修改JDK参数可以改善该状况,打开/usrljaval/jdk1.8.0_171-amd64/jre/lib/securityljava.security文件,找到如下内容:securerandom.source=file:/devlrandom 修改成securerandom.source=file:/dev/urandom。然后重启Tomcat就会发现启动时间变短很多。

                3. Tomcat目录结构

        执行ll /usr/local/tomcat'命令即可查看Tomcat安装后目录结构,如下图8.2所示.

        Tomcat各目录的作用具体如下所示。

1.3 Tomcat配置与优化

        1.3.1 虚拟主机配置

        很多时候公司会有多个项目需要运行,那么肯定不可能是一台服务器上运行多个Tomcat服务,这样会消耗太多的系统资源。此时,就需要使用到Tomcat虚拟主机。例如现在新增两个域名www.test.com和 bbs.test.com,希望通过这两个域名访问到不同的项目内容。

                1. 创建www和bbs项目目录和文件

        执行下面的命令,可以创建www和 bbs 项目目录和文件。

                2. 修改Tomcat主配置文件

        修改Tomcat主配置文件/usr/local/tomcatlconf/server.xml,在<Host>下面增加如下内容。

                3. 虚拟主机访问测试

        客户端绑定两个域名需要写入本机 hosts,Tomcat 默认端口是8080。

        使用浏览器访问http://www.test.com:8080,页面效果如图8.3所示。

         使用浏览器访问http://bbs.test.com:8080,页面效果如图8.4所示。

        1.3.2 Tomcat优化

        Tomcat 默认安装下的缺省配置并不适合生产环境,它会频繁出现假死现象需要重启,只有通过不断压测优化才能让它最高效率稳定的运行。优化主要包括三方面,分别为操作系统优化(内核参数优化),Tomcat配置文件参数优化,Java 虚拟机(JVM)调优。其中最难理解的就是JVM调优。系统优化本章不介绍,本章将配合jmeter 压测工具进行调优前和调优后的数据进行比较。

                1. Tomcat配置文件参数优化

        关于Tomcat主配置文件server.xml里面很多默认的配置项,并不能满足业务需求,常用的优化参数如下。

        如果已经对代码进行了动静分离,静态页面和图片等数据就不需要Tomcat处理了,那么也就不需要在Tomcat中配置压缩了。因为这里只有一台Tomcat服务器,而且压测的是Tomcat首页,会有图片和静态资源文件,所以这里启用压缩。

        以上是一些常用的配置参数,还有好多其它的参数设置,还可以继续深入的优化,HTTPConnector与 AJP Connector 的参数属性值,可以参考官方文档的详细说明进行学习。链接地址 http:/ltomcat.apache.org/tomcat-9.0-doc/config/http.html,下面开始对Tomcat 配置文件优化进行前后的对比。 

                2. jmeter压测工具

        要压测,首先学习关于jmeter压测工具基本的使用方法。执行步骤如下。

1)客户端安装JDK

        从Oracle 官方下载JDK软件,JDK安装过程直接下一步即可。因为本章中所使用的客户端是Windows 10,所以JDK使用jdk-8u102-windows-x64 版本。

2)运行jmeter软件

        本章中是使用的jmeter软件版本为apache-jmeter-3.1,双击运行apache-jmeter-3.1.rar压缩包->bin目录->ApacheJMeter.jar文件即可打开jmeter 软件,如图8.5所示。

3)打开压测脚本进行压测

        点击左上角文件-→>打开->选择压测脚本,如图8.6所示。

        单击第一排绿色三角按钮(鼠标指上去后会显示启动〉开始进行压测,如图8.7所示。

        压测脚本里设置的是20秒启动4000个线程数,并发为2000,超时时间是50000毫秒。也可以适当的根据自己的需求进行修改。为了不那么复杂,从压测结果看只关注聚合报告,聚合报告只关注Average、90% Line、Error%这三列,因为压测Tomcat首页压力不会太大,所以Error都是为О属于正常。先看一组优化前(默认的配置)压测截图,如图8.8所示。

4)修改Tomcat配置

        打开Tomcat主配置文件server.xml,找到如下默认配置

        将Tomcat原本的默认配置修改为如下所示。

5)修改配置参数后压测

        重新启动Tomcat 服务器, jmeter还是继续保持同样的参数进行压测,优化后压测截图,如8.9所示。        

        从结果看优化后的平均值和90%响应时间比优化前的快。

                3. Java虚拟机(JVM)调优

        Tomcat启动命令行中的优化参数,就是JVM的优化。Tomcat是Java程序,运行在JVM之上,因为它的启动其实也只是一个Java命令行,我们需要对这个Java的启动命令行进行调优。不管是YGC还是Full Gc、GC都会导致程序运行中断,正确的选择不同的GC策略,调整JVM、GC的参数,可以极大的减少由于GC工作而导致的程序运行中断方面的问题,进而适当的提高Java程序的工作效率。但是调整GC是一个极为复杂的过程,由于各个程序具备不同的特点,如 Web和GUI程序就有很大区别(Web可以适当的停顿,但GUI停顿是客户无法接受的),而且由于运行在各个机器上的配置不同(主要 CPU个数,内存不同),所以使用的GC 种类也会不同。下面对JVM参数做比较详细的说明。

        Tomcat的启动参数位于安装目录${JAVA_HOME}/bin目录下,Linux操作系统就是catalina.sh 文件。Java_OPTS就是用来设置JVM相关运行参数的变量,下面具体看JVM常用参数详解。

        以上就是一些常用的配置参数,但是有些参数是可以被替代的,配置思路需要考虑的是Java提供的垃圾回收机制。虚拟机的堆大小决定了虚拟机花费在收集垃圾上的时间和频度。收集垃圾能够接受的速度和应用有关,应该通过分析实际的垃圾收集的时间和频率来调整。假如堆的大小很大,那么完全垃圾收集就会很慢,但是频度会降低。假如您把堆的大小和内存的需要一致,完全收集就很快,但是会更加频繁。调整堆大小的目的是最小化垃圾收集的时间,以在特定的时间内最大化处理客户的请求。在基准测试的时候,为确保最好的性能,要把堆的大小设大,确保垃圾收集不在整个基准测试的过程中出现。

        测试前,先还原Tomcat 到默认的配置文件,重启后压测一组优化前压测截图,如图8.10所示。

        上述关于JVM优化参数太多,很多参数需要对GC回收有很深刻的认识。如果优化的不合适,往往会起到事倍功半的效果。下面是常见的优化参数,修改/usr/local/tomcat/bin/catalina.sh,增加红色字体。

        重启Tomcat服务再次进行一轮压测,如图8.11所示。

        从图8.12结果可以得出,优化后的平均值和90%响应时间比优化前的快。在每次优化完后压测数据都可能会存在差异,甚至环境一样压测结果都会不一样,一般都是取多组数据平均值。本章中的优化配置也不一定适合你的环境,但是至少优化的方向是正确的。如果想对jmeter进行深入学习,请查阅相关文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值