• 博客园
  • 首页
  • 新随笔
  • 联系
  • 管理
  • 订阅
随笔- 31  文章- 0  评论- 25 

Tomcat安装、配置、优化及负载均衡详解

一、常见JavaWeb服务器

     1、WebLogic:是BEA公司的产品、WebSphereAS:是IBM公司的产品、JBossAS:红帽公司的产品,可以自行了解
     2、Tomcat服务器: 
           Sun公司在推出的小型Servlet/JSP调试工具的基础上发展起来的一个优秀的Servlet容器,Tomcat本身完全用java语言编写,所以tomcat的运行需要java的支持,所以要先安装JDK,才能运行。目前是Apache开源软件组织的一个软件项目,它的官网 http://tomcat.apache.org。得到了广大开源代码志愿者的大力支持,且可以和目前大部分的主流Web服务器(IIS、Apache服务器)一起工作,它运行稳定、可靠且高效。已成为目前开发企业JavaWeb应用的最佳Servlet容器选择之一。目前最新版本8.0
二、Tomcat的目录结构及常用配置
    1、Tomcat的目录层次结构
         bin:   存放启动和关闭Tomcat的脚本文件
         conf: 存放Tomcat服务器的各种配置文件
         lib:   存放tomcat服务器支撑的jar包
         logs:  存放Tomcat的日志文件
         temp:  存放Tomcat运行时产生的临时文件
         webapps:web应用虽在目录,即供外界访问的web资源的存放目录
         work:  Tomcat的工作目录
    2、JavaWeb应用的组成结构
         mail---------------------------Web应用所在目录
           |----html、jsp、css、js等文件,根目录下的文件外界可以直接访问
           |----WEB-INF目录
                    |---------classes目录(java类)
                    |---------lib目录(java类运行所需的jar包)
                    |---------web.xml(web应用的配置文件)
             WEB-INF 这个目录下的文件外界无法直接访问,由web服务器负责调用
     3、JavaWeb应用的发布
            开放式目录方式:
            打包war方式:   使用   Jar -cvf *.war .
     4、Tomcat的组成结构
            Tomcat本身由一系列可配置的组件构成,其中核心组件是Servlet容器组件,它是所有其他Tomcat组件的顶层容器。每个组件都可以在Tomcat安装目录/conf/server.xml文件中进行配置,每个Tomcat组件在server.xml文件中对应一种配置元素。下面用XML的形式展示各种Tomcat组件之间的关系    
  1. <Server>代表整个Servlet容器组件,是最顶层元素,可以包含一个或多个<Service>元素<Service>包含一个<Engine>元素以及一个或多个<Connector>元素,这些<Connector>共享一个<Engine><Connector/>代表和客户程序实际交互的组件,负责接收客户请求,以及向客户返回响应<Engine>每个<Service>元素只能包含一个<Engine>元素,它处理在同一个<Service>中所有<Connector>接收到的客户请求<Host>在一个<Engine>中可以包含多个<Host>,它代表一个虚拟主机(即一个服务器程序可以部署在多个有不同IP的服务器主机上),它可以包含一个或多个应用<Context>使用最频繁的元素,代表了运行在虚拟主机上的单个web应用</Host></Engine></Service>
    </Server>

           5、Tomcat体系结构

          
        6、虚拟目录的映射方式
          从Tomcat6开始,Tomcat支持自动映射,即tomcat服务器会自动管理webapps目录下的所有web应用,并把它映射成虚拟目录,换句话说,只需把web应用放在webapps目录下,不需要配置Context,外界可以直接访问
          但是如果你不想讲项目放在webapps下,而是放在其他地方,还是需要配置Context,比如我的tomcat在C盘,我的项目在D盘,则需要在Host下增加如下虚拟目录映射语句
  1. <Contextpath="/myapp"docBase="D:/work/myapp"></Context>

    7、Context元素配置

          tomcat在加载一个web应用时,会一次按照以下五种方式查找web应用中的<Context>元素,优先级一次降低,直到找到为止
          1):到Tomcat安装目录/conf/Context.xml文件中查找<Context>元素。
          2):到Tomcat安装目录/conf/[enginename]/[hostname]/context.xml.default文件中查找<Context>元素。
               [enginename]:表示<Engine>的name属性
               [hostname]:表示<Host>d的那么属性
          3):到Tomcat安装目录/conf/[enginename]/[hostname]/[contextpath].xml文件中查找<Context>元素
                [contextpath]:表示单个Web应用的URL入口
          4):到Web应用的META-INF/context.xml文件中查找<Context>元素
          5):到Tomcat安装目录/conf/server.xml文件中查找<Context>元素。只适用于单个Web应用
        8、将项目部署为Tomcat默认应用
             即访问 http://localhost:8080 时出来的是tomcat自带的欢迎页面,改为登录到自己的项目主页
               方法一:
                     在Tomcat默认安装后,tomcat的主目录是webapps/root目录,所以如果想改变tomcat的主目录的话可以如下所做:
                     在/conf/server.xml文件的<Host></Host>之间加入代码
  1. <Contextpath=""docBase="C:\tomcat7\webapps\myapp"reloadable="true"debug="0"></Context>
    <!--
    docBase改为自己需要的项目路径
    如果建立了Apache和tomcat集群,Apache server 的默认端口是80 ,IE访问的方法只需输入:http://localhost,就可以自动定位到xx工程下面去
    -->

     方法二:

                   将tomcat安装目录下的ROOT下的所有文件删除,换成自己项目的文件,此法有点暴力
               方法三:
                   Tomcat5.0以下版本在C:/Tomcat/conf/Catalina/localhost目录下会自动生成了一个ROOT.Xml,但是5.0以上版本不再生成此文件,所以可以新建个ROOT.xml,在里面加入如下代码:
  1. <?Xml version='1.0' encoding='utf-8'?>
    <ContextcrossContext="true"docBase="C:\tomcat7\webapps\myapp"path=""reloadable="true">
    </Context>
    <!--但是我自己在7.0版本上测试好像未成功,大家可以自己试试-->

    9、Context元素的属性

               path:    指定访问该Web应用的URL入口
               docBase: 指定Web应用的文件路径,可以写绝对路径,也可以写相对于appBase属性的相对路径
               className:指定实现Context组件的Java类的名字,这个类必须实现org.apache.catalina.Contex接口,该属性默认值为org.apache.catalina.core.StandardContext(不建议大家改动)
               reloadable:如果为true,Tomcat服务器在运行状态下回监视在WEB-INF/classes和WEB-INF/lib目录下的class文件的改动,以及监视Web应用的WEB-INF/web.xml文件的改动,如果检测到有更新,服务器会自动更新加载web应用。其默认值为false。在开发和调试阶段,将其改为true,一般像Eclipse等开发环境都会默认改为true。在正式发布阶段,应将其该为false,可以降低Tomcat的运行负荷,提高Tomcat的运行性能
               在一般情况下,<Context>元素都会使用默认的标准Context组件,即className属性采用默认值org.apache.catalina.core.StandardContext,它除了拥有上面介绍到的属性外,还有自身专有的属性:
               cachingAllowed:是否允许启用静态资源(HTML、图片、声音等)的缓存。默认值为true。
               cacheMaxSize:设置静态资源缓存的最大值,单位为K。
               workDir:指定Web应用的工作目录。
               uppackWAR:如果为true,会把war文件展开为开放目录后再运行。为false,直接运行war文件。默认值为true。
        10、web.xml文件
             该文件必须放在/WEB-INF目录下,但是从7.0版本开始,Tomcat可以不使用web.xml文件,而是使用注解方式。
三、Tomcat的优化
        1、内存使用配置
           Tomcat是依赖于JVM的,所以Tomcat的使用内存配置实质上是JVM的内存配置
           在/bin目录下的catalina.bat可以直接通过Tomcat设置JVM内存参数,windows下
           打开catalina.bat文件,在大概中间的位置,找到
           set "JAVA_OPTS=%JAVA_OPT% -server -Xms2048m -Xmx2048m -XX:PermSize=256m -XX:MaxPermSize=512m -Djava.awt.headless=true"
           通过内存设置充分利用服务器内存
           -server:   模式启动应用慢,但是极大程度提高运行性能
           -Xms2048m -Xmx2048m:   设置的是堆内存
           java8开始,PermSize被MetaspaceSize代替,MetaspaceSize共享heap,不会再有java.lang.OutOfMemoryError:PermGen space,可以不设置
           Headless=true:   适用于Linux系统,与图形操作有关,如生成验证码含义是当前的是无显示器的服务器,应用中如果获取系统显示有关的参数会抛出异常,windows系统可不用设置
           可通过jmap -heap process_id查看设置是否成功
         2、最大连接数配置(并发能力)
            在/conf/server.xml里进行配置
            在<Connector>属性中
            将protocol属性改为 "org.apache.coyote.http11.Http11NioProtocol",NIO模型的效率更高
            加入
                maxThreads="500" //当前可以同时处理的最大用户访问数
                minSpareThreads="100" //最小空闲线程连接数,用于优化线程池
                maxSpareThreads="200"
                acceptCount="200" //当所有的线程以分配,仍然允许连接进来,但是出于等待状态的用户数。等待线程数+工作线程数=总的可最大连接数,如果超过此数,新的连接将不会被接受,就会产生一个http错误
                enableLookups="false"//是否允许DNS反查,如果为true,request.getRemoteHost会执行DNS查找,反向解析ip对应域名或主机名,当没有这样需要的时候,可以将这个功能关闭,在一定程度上提高了Tomcat服务器的性能
 
四、负载均衡配置
       负载均衡是提高应用负载量和容错的有效手段,可以结合Nginxs与Tomcat实现,Nginx是一款性能优异的反向代理服务器
       1、负载均衡配置实现
             反向代理原理示意图:
             
              负载均衡示意图:
              
              负载均衡策略:
                 Nginx 提供轮询(round robin)、用户IP哈希(client IP)和指定权重 3 种方式
       2、负载均衡时Session的处理策略
              Session是Tomcat服务器上的内存空间,如果一个用户发出多个请求,却发到了多个tomcat服务器中,那么就会出现Session不同步的问题
              解决方案1:将一个用户的请求锁定到某一台服务器上,简单,但是缺乏容错性,一旦某个服务器发生故障,Session可能丢失,(但是服务器发生故障是一个低概率事件,如果一个服务器经常挂掉,要么是硬件有问题,要么是应用有问题
                        可以使用用户IP哈希实现
            解决方案2:Session复制策略,基于网络的广播策略,一个节点Session变化,其他节点同步复制,具有容错性,但节点多或复制量大时对网络负荷大,使网络效率低下,甚至阻塞
                     ① 在/conf/server.xml文件中开启Session复制的选项,将<Cluster>注释去掉,7.0默认值以配置好,需要接收器<Receiver>绑定内网(一般服务器都有两块网卡)网卡地址,修改端口>。
                      在应用中指定应用是在分布式部署之下,在web.xml中添加<distributable/>选项
            解决方案3:额外创建一个共享的空间用来存放Session,所有服务器共享一个Session
                        memcached缓存共享方案基本原理
                        粘性Session与非粘性Session方式:
                        
                           需要一些工具jar包,官网有目录和下载连接
                           在/conf/context.xml中进行配置,全局有效
       3、集群环境中应用代码应注意的问题
                ① 传递Session需要实体类序列化支持,实现可序列化接口,设置版本号
              ② 获取用户IP地址方法的变化,获取真实客户端ip而不是Nginx代理地址
                ③ 动静分离结构的预规划,
                   一般高并发的网站上,资源类的文件,如js,css,图片通常是由静态服务器处理,Nginx处理静态文件效率就非常高,而tomcat处理静态文件是它很大的一个弱势,tomcat只负责动态请求的处理。那么编码的时候就要考虑静态资源最后可能要被拿出去,地址会有变化,所以在开发的时候应该规划访问地址,保持最大灵活性。
 
来自为知笔记(Wiz)

标签: JavaWeb
好文要顶 关注我 收藏该文

rocomp
关注 - 4
粉丝 - 96

+加关注

9
0

« 上一篇:JVM自动内存管理学习笔记
» 下一篇:HTTP协议报文、工作原理及Java中的HTTP通信技术详解

posted @ 2015-09-12 00:05 rocomp 阅读(10545) 评论(1) 编辑 收藏

评论
回复引用

#1楼32652642015/9/12 0:16:04 2015-09-12 00:16 | xiaoman123

谢谢楼主好文分享,学习了
支持(0)反对(0)

刷新评论刷新页面返回顶部
发表评论

昵称:

评论内容:

不改了 退出 订阅评论

[Ctrl+Enter快捷键提交]

【推荐】50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
【推荐】加入腾讯云自媒体扶持计划,免费领取域名&服务器
【推荐】高性能云服务器2折起,0.73元/日节省80%运维成本
【福利】限时领取,H3 BPM给你发年终奖
最新IT新闻:
· 微信小程序重磅功能上线!一键连Wi-Fi、手机变门禁卡
· 《王者荣耀》体验服更新:“五军对决”正式上线
· FBI指纹分析软件被曝含有俄罗斯开发的代码
· 马化腾:快的和滴滴打仗 最高一天亏4000万元
· 我国国产北斗芯片累计销量突破5000万片
» 更多新闻...
最新知识库文章:

· 步入云计算
· 以操作系统的角度述说线程与进程
· 软件测试转型之路
· 门内门外看招聘
· 大道至简,职场上做人做事做管理

» 更多知识库文章...

转载于:https://www.cnblogs.com/jobs-lgy/p/8125109.html

Tomcat安装、配置、优化及负载均衡详解相关推荐

  1. 大型网站架构系列:负载均衡详解(4)

    原文:大型网站架构系列:负载均衡详解(4) 本文是负载均衡详解的第四篇,主要介绍了LVS的三种请求转发模式和八种负载均衡算法,以及Haproxy的特点和负载均衡算法.具体参考文章,详见最后的链接. 三 ...

  2. Kubernetes上的负载均衡详解

    如果您的应用程序是面向大量用户.会吸引大量流量,那么一个不变的目标一定是在高效满足用户需求的同时.不让用户感知到任何类似于"服务器繁忙!"的情况.这一诉求的典型解决方案是横向扩展部 ...

  3. 大型网站架构系列:负载均衡详解(3)

    本次分享大纲 软件负载均衡概述 Ngnix负载均衡 Lvs负载均衡 Haproxy负载均衡 本次分享总结 一.软件负载均衡概述 硬件负载均衡性能优越,功能全面,但是价格昂贵,一般适合初期或者土豪级公司 ...

  4. Nginx代理功能与负载均衡详解

    序言 Nginx的代理功能与负载均衡功能是最常被用到的,关于nginx的基本语法常识与配置已在上篇文章中有说明,这篇就开门见山,先描述一些关于代理功能的配置,再说明负载均衡详细. Nginx代理服务的 ...

  5. Spring Cloud:使用Ribbon实现负载均衡详解(下)

    在上一篇文章(Spring Cloud:使用Ribbon实现负载均衡详解(上))中,我对 Ribbon 做了一个介绍,Ribbon 可以实现直接通过服务名称对服务进行访问.这一篇文章我详细分析一下如何 ...

  6. 大型网站系统架构系列:负载均衡详解(一)

    大型网站系统架构系列:负载均衡详解(一) 2016-03-20 架构说 面对大量用户访问.高并发请求,海量数据,可以使用高性能的服务器.大型数据库,存储设备,高性能Web服务器,采用高效率的编程语言比 ...

  7. Dropbear 安装配置与启动ssh服务详解

    Dropbear 安装配置与启动ssh服务详解  扎啤 关注 2017.09.12 22:57* 字数 441 阅读 4160评论 0喜欢 0 一.介绍 dropbear作为一款基于ssh协议的轻量级 ...

  8. Nginx四层负载均衡详解

    Nginx四层负载均衡 什么是四层负载均衡 四层负载均衡基于传输层协议包来封装的(如:TCP/IP),那我们前面使用的七层指的是应用层,它的组装在四层基础之上,无论是四层还是七层都是这是OSI网络模型 ...

  9. Haproxy负载均衡详解,与keepalived的搭配

    首先对比一下LVS/Nginx/HAProxy特点 名称 特点 LVS 1) 抗负载能力强.是工作在网络4层之上仅作分发之用,没有流量的产生,这个特点也决定了它在负载均衡软件里的性能最强的: 2) 配 ...

最新文章

  1. 重温经典之排序 java实现
  2. UI自动化之特殊处理三(日期控件\表格\富文本)
  3. 使用Mysql数据库完成增删改查综合案例(JSP页面)
  4. 厉害了,教你用 Spring Boot 控制并发登录人数
  5. kibana操作elasticsearch:多字段查询(multi_match)
  6. guns开源项目数据库切换为oracle
  7. java学习(154):文件复制
  8. 从零开始学视觉Transformer (11):目标检测DETR-2
  9. Orcale的存储过程
  10. javascript本地,宿主,内置对象
  11. mysql日志文件转存_【转】Mysql日志文件
  12. 数组可以容纳多少水----------给你出道题
  13. 视频播放加密功能的演示
  14. 微服务部署之蓝绿发布、滚动发布、灰度发布区别与特点
  15. 电信物联卡稳定的apn接入点_0月租的电信纯流量卡怎么样?
  16. Django框架目录结构
  17. flutter 内网安装包生成二维码
  18. SONY索尼A7S3意外断电后内存卡找不到视频文件的数据恢复
  19. 工程伦理--4.1 解决伦理困境的一般步骤
  20. 程序设计与算法(三)期末考试之013:编程填空:三生三世

热门文章

  1. python打开是什么样子的图片_黑洞6问:黑洞内部是什么样子?黑洞图片发布,理论和实测的碰撞...
  2. 第32届IEEE机器人与人类交互通信国际会议ROMAN 2023
  3. 多人聊天功能代码php,PHP+swoole实现简单多人在线聊天群发效果
  4. c标准时间与时间戳转换
  5. 推荐5个超实用的神器网站
  6. 台式电脑w ndows7密钥,windows7品牌机各版本oem密钥
  7. 仿QQ-----开发工具vs2005 相关下载
  8. 爱思助手(i4助手) v5.08 官方版​
  9. 利用手机相机实现表面缺陷检测学习【缺陷检测_01】
  10. 外贸必备通讯工具之一,AntTone 的介绍及使用教程