`
youxinrencwx
  • 浏览: 73086 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Web容器测试模型选择

 
阅读更多

最近被内部问了太多关于jetty测试的问题了,所以这里先写一点开头,后续再全面的做一下测试,想说的就是测试需要你去关注场景,需要去区分什么是表象和本质。

你的系统是什么系统:(一步一步的做判断)

流入系统 or 流出系统?

流入系统(系统完成请求无外部系统依赖,缓存可以考虑成为非外部依赖)

瓶颈在CPU,带宽,内存(容器连接数,线程数)?

流出系统(系统完成请求有外部系统依赖)

瓶颈在CPU,带宽,内存(容器连接数,线程数) or 第三方系统?

第三方系统:

1. 强依赖,无法降级和后备切换

2. 弱依赖,可降级跳过或后备可切换。(多个服务提供者提供同样的服务)

模型建立:

1. 同样资源情况下处理能力的比较。(不要仅仅去比较线程数,因为你的资源是cpu,memory等等,线程是表象)因此不要简单的认为容器间的平等就是设置线程数的平等,不同容器采用的处理模式是不同的,就好比不要用NIOBIO去比较他们的线程数一样。这类测试需要关注同等资源这个标准如何建立(loadmemory等),同样的资源下再比较两者的TPS适用于流入系统来做压力测试。(本身的系统消耗决定了处理能力)

2. 模拟不同RT范围的场景,不同容器对于资源的消耗程度。(比如模拟后端系统响应时间的范围,来观察不同容器并发处理能力及稳定性)。适用于流出系统的强依赖模式。

3. 通过采用类似于Jetty Continuation或者servlet3的模式来将业务和系统线程池切分开来,加上带有业务性隔离的服务线程池实现服务切换和降级,比较带来的损耗是否可以接受,判断是否换容器。适用于流出系统的弱依赖模式。

总体来说:

1. 建立统一的资源消耗模型(用实际的消耗来判断服务器的能力瓶颈)

2. 根据依赖系统的响应时间来实际模拟场景判断带来的影响。(连接消耗在某些场景下已经是九牛一毛的case了,优化本身就没有太大实际意义)

3. 对于系统本身是否有除了性能以外的更多需求,比如系统稳定性要求的服务降级和切换。

4. 容器本身的模式可改进点及可维护性(模块化等)。

5. 最后对于慢请求的支持(内部网络请求往往无法模拟慢请求对java容器的“伤害”,这也就是为什么要加一层http代理的目的)

近期做一下测试比较,给出一些结论性的东西,不过希望大家做测试一定要考虑场景和真实的需求,切勿仅仅为了容器测试而作容器测试。(同时把封装的jetty层异步调用+业务性隔离的线程池代码包共享出来)

分享到:
评论

相关推荐

    jax-ws基于web容器发布webServer

    "jax-ws基于web容器发布webServer" 这个标题指的是使用Java API for XML Web Services (JAX-WS)技术在Web容器(如Tomcat、Jetty等)中部署和运行Web服务的过程。JAX-WS是Java平台上的标准,用于创建和消费SOAP...

    Jetty web 容器

    Jetty 是一个开源的、轻量级的 Java Web 应用服务器,它被广泛用于开发、测试和部署Web应用程序。Jetty 的设计目标是小巧、快速、易于集成,使其成为开发人员和小型团队的理想选择。在本文中,我们将深入探讨 Jetty ...

    JAVA里使用Jetty作为轻量级嵌入式的Web容器

    3. **使用Jetty作为Web容器** - 首先,需要在项目中添加Jetty的依赖,可以通过Maven或Gradle来管理。 - 创建一个`Server`实例,并配置监听端口。 - 添加`Handler`,如`ServletContextHandler`,来处理HTTP请求。 ...

    ejb3 第12讲 --开发EJB容器模型的WEB服务

    在本主题"ejb3 第12讲 --开发EJB容器模型的WEB服务"中,我们将探讨如何利用EJB 3.0版本来创建和整合Web服务。EJB 3.0是一个重要的里程碑,因为它显著简化了EJB的使用,引入了更多的POJO(Plain Old Java Object)...

    EJB3.0学习总结(二)--EJB3.0容器模型的WEB服务

    在本文中,我们将深入探讨EJB3.0的容器模型以及其在Web服务中的应用。EJB3.0引入了大量简化开发的特性,使其更加轻量级和易于使用,同时保持了强大的功能。 ### EJB3.0容器模型概述 EJB3.0容器模型的核心是组件...

    基于netty实现的web框架

    6. **测试与调试**:项目可能包含了测试用例,使用JUnit或其他测试框架,以确保Web框架的功能正确无误。此外,日志框架如Logback或Log4j可能会被用来记录应用程序的运行状态,便于调试和问题排查。 通过学习这个...

    JAVA外文文献翻译基于Java技术的Web应用设计模型的比较研究.pdf

    Tomcat是Apache软件基金会的一个开源项目,用于提供一个Servlet容器,可以作为独立的服务器或者与其他Web服务器一起工作。Apache HTTP服务器是世界上使用最广泛的Web服务器,可用于托管静态内容和动态内容,并支持...

    MVC与IOC容器互动

    3. 易于测试:由于依赖关系由容器管理,可以在测试时方便地替换依赖,进行单元测试。 **Formwork框架中的MVC与IOC互动** Formwork框架是一个用于快速开发的轻量级PHP框架,它内置了MVC结构和IOC容器。在Formwork中...

    ActiveX控件测试容器

    ActiveX控件测试容器,全称为TstCon32.exe,是Windows操作系统中用于测试和调试ActiveX控件的一个重要工具。尤其在Windows Vista及Windows 7系统中,它为开发者提供了一个直观的环境,来验证和评估ActiveX(OCX)...

    基于docker容器的高并发web系统架构设计与实现.caj

    《基于docker容器的高并发web系统架构设计与实现》随着互联网迅速发展,社交、媒体以及电商等web网站用户数量 越来越大,并发流量也越来越高,这对于传统web系统架构设计提出 新的挑战。本文基于...

    web service 测试演示程序

    WEB-INF包含了Web应用的配置文件(如web.xml)和类文件,而META-INF通常存储元数据,如服务的版本信息和容器需要的其他配置。在测试Web服务时,理解这些文件的作用可以帮助我们更好地调试和配置应用。

    主流应用服务器对webContainer的配置对比分析new.doc

    作为开源的应用服务器,Glassfish提供了丰富的Web容器配置选项。常规属性配置包括服务器端口、服务器ID等基础设置。Session属性配置涉及会话超时、会话跟踪模式等,这关系到用户在线状态的维护。管理属性则关乎...

    C# WebAPI示例

    .NET Core中的WebAPI更进一步,通过内置的依赖注入容器,可以轻松地注入服务到控制器和其他组件。 7. **媒体类型格式化(Media Type Formatters)**:WebAPI可以自动将返回的数据转换为适当的HTTP响应格式,如JSON...

    Java实训教程 Java软件开发实战 web开发技术 第2章 web编程入门 共26页.pptx

    **部署到Web容器**:将项目部署至已配置好的Web容器中。 5. **启动容器**:启动Web容器,使项目可以运行。 6. **访问Web项目**:通过浏览器访问部署的Web项目地址。 - **Web容器配置**: - 在MyEclipse中配置...

    WebApi_测试.rar

    依赖注入(DI)容器如Unity或Autofac也可以整合进来,以提高代码的可测试性和可维护性。 综上所述,"WebApi_测试.rar"很可能包含了一个用于测试和评估WebApi应用程序的全面环境,包括控制器、路由、数据绑定、测试...

    基于工作任务的Java_Web应用教程[覃国蓉][电子教案]

    部署Java Web应用通常涉及创建WAR(Web Application Archive)文件,然后将其上传到Web容器的指定目录。在Tomcat中,WAR文件通常放在webapps目录下,容器会自动解压并启动应用。 【总结】 “基于工作任务的Java_...

    开发突击者java web开发

    总结,"开发突击者java web开发"涉及到的知识点包括Java Servlet、JSP、JDBC、MVC模式、各类Java Web框架(Struts、Spring、Hibernate)、前端技术、Web容器与服务器、以及现代开发流程中的持续集成与部署。...

Global site tag (gtag.js) - Google Analytics