Linux system architecture ----- Tomcat deployment and optimization of virtual hosts

A. The deployment of Web Hosting

  • Outline

Sometimes a company may have multiple projects to run, it certainly can not be run on a single server multiple Tomcat service, it will consume too many system resources. At this point, you can use Tomcat virtual host. Now two additional domain names www.kgc.com and www.yun.com, accessed via the two domain names to a different project content.

  • Specific environment
Host computer IP addresses domain name Package
Tomcat server 192.168.43.231

www.kgc.com

www.yun.com

bind (dns servers)

jdk-8u231-linux-x64.tar.gz

apache-tomcat-8.5.50.tar.gz

Tester 192.168.10.43    
  • Install the DNS Service
#安装DNS服务
[root@localhost ~]# yum install bind -y
#修改主配置文件
[root@localhost ~]# vim /etc/named.conf
...
   listen-on port 53 { any; };
...
  allow-query     { any; };
....
#修改区域配置文件
[root@localhost ~]# vim /etc/named.rfc1912.zones
...
zone "kgc.com" IN {
        type master;
        file "kgc.com.zone";
        allow-update { none; };
};
zone "yun.com" IN {        type master;
        file "yun.com.zone";
        allow-update { none; };
};
...
#修改区域数据配置文件

[root@localhost ~]# cd /var/named
[root@localhost named]# cp -p named.localhost kgc.com.zone  //保持文件属性
[root@localhost named]# vim kgc.com.zone 
[root@localhost named]# 
...
$TTL 1D
@       IN SOA  @ rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       127.0.0.1
www IN  A       192.168.43.231

...
[root@localhost named]# cp -p kgc.com.zone yun.com.zone
#启动服务,关闭防火墙,SElinux
[root@localhost named]# systemctl start named
[root@localhost named]# systemctl stop firewalld
[root@localhost named]# setenforce 0
[root@localhost named]# netstat -natp | grep named
tcp        0      0 192.168.43.231:53       0.0.0.0:*               LISTEN      2808/named          
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      2808/named          
tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      2808/named          
tcp6       0      0 ::1:53                  :::*                    LISTEN      2808/named          
tcp6       0      0 ::1:953                 :::*                    LISTEN      2808/named 
  • Install the JDK
#在官网获得数据包,需要注册账户,一般用qq邮箱就行
https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
#解压数据包
[root@localhost ~]# tar zxvf jdk-8u231-linux-x64.tar.gz -C /usr/local
#配置环境变量
[root@localhost ~]# vim /etc/profile
...
export JAVA_HOME=/usr/local/jdk1.8.0_231
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$PATH
...
#重载文件
[root@localhost ~]# source /etc/profile
#查看java版本
[root@localhost ~]# java -version
java version "1.8.0_231"
Java(TM) SE Runtime Environment (build 1.8.0_231-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.231-b11, mixed mode)
[root@localhost ~]# 
  • Tomcat installation
#获取Tomcat数据包
yum install vsftpd -y
systemctl start vsftpd
#开启ftp服务,下载tomcat包
wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.50/bin/apache-tomcat-8.5.50.tar.gz
#解压
[root@localhost ~]# tar xzvf apache-tomcat-8.5.50.tar.gz -C /usr/local
#修改目录名
[root@localhost ~]# cd /usr/local
[root@localhost local]# ls
apache-tomcat-8.5.50  etc    include       lib    libexec  share
bin                   games  jdk1.8.0_231  lib64  sbin     src
[root@localhost local]# mv apache-tomcat-8.5.50/ tomcat/
[root@localhost local]# ls
#开启tomcat服务
[root@localhost local]# cd tomcat/bin
[root@localhost bin]# ./startup.sh 
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/jdk1.8.0_231
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@localhost bin]# 
#查看端口是否开启
[root@localhost bin]# netstat -natp | grep 8080
tcp6       0      0 :::8080                 :::*                    LISTEN      37539/java          
[root@localhost bin]# 

  • Virtual Host Configuration
#在/usr/local/tomcat/webapps/下,创建以下两个目录以及文件
[root@localhost ~]# cd /usr/local/tomcat/webapps/
[root@localhost webapps]# mkdir kgc yun
[root@localhost webapps]# echo "<h1>KGC</h1>" > kgc/index.jsp
[root@localhost webapps]# echo "<h1>YUN</h1>" > yun/index.jsp
#查看目录文件
[root@localhost webapps]# tree kgc yun
kgc
└── index.jsp
yun
└── index.jsp

0 directories, 2 files
[root@localhost webapps]# 
#修改tomcat的主配置文件,/usr/local/tomcat/conf/server.xml
vim /usr/local/tomcat/conf/server.xml
...
<Host name="www.kgc.com"  appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
      <Context docBase="/usr/local/tomcat/webapps/kgc" path="" reloadable="ture" />
      </Host>

<Host name="www.yun.com"  appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
      <Context docBase="/usr/local/tomcat/webapps/yun" path="" reloadable="ture" />
      </Host>
...
#重启Tomcat
[root@localhost bin]# ./shutdown.sh 
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/jdk1.8.0_231
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
[root@localhost bin]# ./startup.sh 
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/jdk1.8.0_231
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@localhost bin]# 
  • Verify on the client
[root@localhost ~]# vim /etc/resolv.conf 
...
# Generated by NetworkManager
search localdomain
nameserver 192.168.43.231
~                           
...

Virtualization configuration is complete

Two .Tomcat optimization

  • Tomcat's default configuration is not suitable for the production of a bad environment, it needs to restart frequent phenomenon of suspended animation, just let it run stable maximum efficiency through continuous pressure measurement can be optimized.
  • Optimization There are three main aspects: the operating system is divided into optimization (kernel parameter optimization), Tomcat configuration file parameters optimized, Java Virtual Machine (JVM) tuning.
  • The best understanding is jvm tuning, this article with jmeter pressure measurement tools for data before and after tuning tuning compare
  • Tomcat profile parameter optimization, the optimization parameters used are as follows:
  • maxThreads, Tomcat using threads to handle each request is accepted, this value represents the maximum number of threads that can be created Tomcat, the default value is 200
  • The number of threads minSpaceThreads, the minimum number of idle threads, initiated during Tomcat startup, said that even if no one uses also open such a thread waits for long and short, the default value is 10
  • maxSpaceThreads, the maximum number of spare threads, thread creation once more than this value, Tomcat will close the socket threads are no longer needed. The default value is -1 (unlimited). Generally do not need to specify
  • URIEncoding, specify the URL-encoded format Tomcat container. Language encoding format to facilitate this configuration would be better to other Web server software, you need to specify respectively
  • connectionTimeout,网络连接超时,单位:毫秒,设置为0表示永不超时,这样设置有隐患的。通常默认2000 毫秒就可以
  • enableLookups,是否反查域名,以返回远程主机的主机名,取值为:true 或者 false,如果设置为false,则直接返回IP地址,为了提高处理能力,应设置为 false
  • disableUploadTimeout,上传时是否使用超时机制,应设置为 true
  • connectionUploadTimeout,上传超时时间,毕竟文件上传可能需要消耗更多的时间,这个根据你自己的业务需要自己调,以使Servlet有较快的时间来完成它的执行,需要与上一个参数一起配合使用才会生效
  • acceptCount,指定当所有可以使用的处理请求的线程数都被使用时,可传入连接请求的最大队列长度,超过这个数的请求将不予处理,默认为100个
  • compression,是否对响应的数据进行GZIP压缩,off:表示禁止压缩;on:表示允许压缩(文本将被压缩)、force:表示所有情况下都进行压缩,默认值为off,压缩数据后可以有效的减少页面的大小,一般可以减少1/3左右,节省带宽
  • compressionMinSize,表示压缩响应的最小值,只有当响应报文大小大于这个值的时候才会对报文进行压缩,如果开启了压缩功能,默认值就是2048
  • compressableMimeType,压缩类型,指定对那些类型的文件进行数据压缩
  • noCompressionUserAgents="gozilla, traviata":对于以下的浏览器,不启用压缩。如果已经对代码进行了动静分离,静态页面和图片等数据就不需要 Tomcat 处理了,那么也就不需要在 Tomcat 中配置压缩了。因为这里只有一台 Tomcat 服务器,而且压测的是Tomcat 首页,会有图片和静态资源文件,所以这里启用压缩。

  • 下载jdk,配置java环境

  • 在测试机上安装jdk
  • 运行jmeter软件
  • 打开压测脚本进行压测

  • 修改Tomcat的主配置文件,进行优化设置
vim /usr/local/tomcat/conf/server.xml
...
<Connector port="8080" protocol="HTTP/11.1" 
# 默认端口8080以及http协议

connectionTimeout="20000" 
#连接超时20秒

redirectPort="8443" 
#HTTPS协议号

minSpareThreads="50" 
#最小空闲线程50个

enableLookups="false" 
#不开启反向查找

disableUploadTimeout="true" 
#上传超时

acceptCount="300" 
#等待队列为300

maxThreads="500" 
#最大线程数为500

processorCache="500"
#缓存对象序列为500

URIEncoding="UTF-8" 
#字符集支持中文

compression="on" 
#开启压缩功能

compressionMinSize="2048" 
#压缩最小阈值为2048

compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain,image/gif,image /jpg,image/png"/>
#支持的压缩类型

...
#重启Tomcat服务器
[root@localhost bin]# ./startup.sh
[root@localhost bin]# ./shutdown.sh
  • 使用jmeter压测,对比之前的压测数据

注:由于在实验坏境下,数据量很小,所以导致压测并不明显

 

 

 

发布了94 篇原创文章 · 获赞 108 · 访问量 6391

Guess you like

Origin blog.csdn.net/qq_42761527/article/details/103765206