西南IT社区
    • 注册
    • 登录
    • 搜索
    • 主页
    • 问答
    • 话题
    • 热门
    • 圈子
    • 工作机会
    • 活动
    • 项目

    性能优化

    技术答疑
    性能优化
    1
    1
    32
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 为
      为情心迷茫 最后由 编辑

        对于提供接口服务的应用来说,很多都是用 SpringBoot 默认的 Servlet 容器 Tomcat。在一开始上线的时候,由于大多数流量较小,我们也并不会为 Tomcat 做专门的参数调整。但随着流量越来越大,应用的各项性能指标越来越差,此时我们大多数都会选择扩容。
      除了扩容之外,我们还可以选择对 Tomcat 进行性能调优,从而在不增加成本的情况下提升性能。如果面试官问你,流量突增你们一般怎么做,你只会答扩容可就太差劲了。
      要对 Tomcat 进行性能调优,我们需要先了解其组件架构。Tomcat 的组件架构如下图所示:
      7e6ccc91-5726-4c81-ad3a-ec0732eee8ce-image.png
        从上图可以看到,Tomcat 将其业务抽象成了 Server、Service、Connector、Container 等等组件,每个组件都有不同的作用。
        Server 组件。 Server 组件是 Tomcat 最外层的组件,该组件是 Tomcat 实例本身的抽象,代表着 Tomcat 自身。一个 Server 组件可以有一个或多个 Service 组件。
        Service 组件。 Service 组件是 Tomcat 中一组提供服务、处理请求的组件,一个 Service 组件可以有多个 Connector 连接器和一个 Container,有多个 Connector 表示其可以同时使用多种协议接收用户请求。
        Connector 组件。 Connector 负责处理客户端的连接,它提供各种服务协议支持,包括:BIO、NIO、AIO 等等。其存在的价值在于,为 Container 容器屏蔽了多协议的复杂性,统一了 Container 容器的处理标准。
        Container 组件。 Container 组件是负责具体业务逻辑处理的容器,当 Connector 组件与客户端建立连接后,便会将请求转发给 Container 组件的 Engine 组件处理。
        到这里,Tomcat 的核心组件基本上讲完了。实际上 Container 组件里还细分了很多组件,其实对业务的抽象,感兴趣的可以继续看看。
        Engine 组件。 Engine 组件表示可运行的 Servlet 实例,包含了 Servlet 容器的核心功能,其可以有一个或多个虚拟主机(Host)。其主要功能是将请求委托给合适的虚拟主机处理,即根据 URL 路径的配置匹配到合适的虚拟主机处理。
        Host 组件。 Host 组件负责运行多个应用,其负责安装这些应用,其主要作用是解析 web.xml 文件,并将其匹配到对应的 Context 组件。
        Context 组件。 Context 组件代表具体的 Web 应用程序本身,其最重要的功能就是管理里面的 Servlet 实例。一个 Context 可以有一个或者多个 Servlet 实例。
        Wrapper 组件。 一个 Wrapper 组件代表一个 Servlet,它负责管理一个 Servlet,包括 Servlet 的装载、初始化、执行以及资源回收。Wrapper 是最底层的容器。
        可以看到,Host 是虚拟主机的抽象,Context 是应用程序的抽象,Wrapper 是 Servlet 的抽象,而 Engine 则是处理层的抽象。
      d9cbb6aa-e2c7-4bea-bc3f-8877ffe84b2d-image.png

      1 条回复 最后回复 回复 引用 0
      • First post
        Last post
      使用HTML构建办公软件 使用HTML构建办公软件 使用HTML构建办公软件
      为
      F
      漫
      成
      Y
      洋
      书
      Y
      D
      U
      Y
      娇
      玩
      1
      光
      A
      庆
      小
      U
      Y
      L
      I
      Z
      I
      Y

      西南地区IT社群(QQ)
      云南
      【昆明网页设计交流吧】243627302
      【昆明nodejs交流吧】 243626749
      【VUE】838405306
      【云南程序员总群】343606807
      【昆明UI设计】104031254
      【云南软件外包】15547313
      贵州
      【PHP/java源码/站长交流群】55692114
      四川
      【成都Java/JavaWeb交流】86669225
      【vaScript+PHP+MySql】116270060
      【UI设计/设计交流学习群】135794928
      重庆
      【诺基亚 JAVA游戏博物馆】 559479780
      【PHP,Java,Python,C++接单】 442103442
      西藏
      社群
      昆明网页设计交流吧
      友情链接
      • Funtask
      • Funtask 社区
      • SUWIS
      ©2019-2021 滇ICP备20006698号