精华内容
下载资源
问答
  • 文章目录在Istio上根据HTTP header对Spring Boot应用作路由分发实现AB testing前言AB testing配置OpenTracing Jaeger配置服务的Istio VirtualService和DestinationRule测试Postman测试Curl测试JMeter测试 ...

    在Istio上根据HTTP header对Spring Boot应用作路由分发实现AB测试

    前言

    本文描述了在Istio上根据HTTP header对Spring Boot应用作路由分发实现AB testing的过程。

    环境:

    • OpenShift 4.6
    • Service Mesh 2.x (Istio 1.6.5)
    • Spring Boot 2.2.11.RELEASE
    • Java 8

    AB testing

    在Istio中配置一个特殊的HTTP header,如何调用该服务时传入了该header,则将路由分发到新版本v2,否则将路由分发到原版本v1。

    配置OpenTracing Jaeger

    参见:

    注意,一定要开启enable-b3-propagation ,因为Istio默认使用“B3 progration",否则Istio无法根据HTTP header来实现路由分发。

    示例:

    opentracing:
      jaeger:
        enable-b3-propagation: true
        udp-sender:
          host: jaeger-agent.istio-system.svc
          port: 6831
    

    这里,容易受Istio官方的bookinfo示例程序误导,以为提供任意的HTTP header,Istio都可以支持。

    实际上,bookinfo程序在各个服务都自己实现了“b3 propagation",才使得可以支持"end-user"这个看似普通,但是写死在代码里面的HTTP header。

    而Spring Boot应用中依赖的是opentracing-spring-jaeger-web-starter 来作为Jaeger Client,该Jaeger Client传播的HTTP header格式为baggage-key:value。也就是用于控制路由分发的HTTP header一定要以baggage-开头。

    参见:

    配置服务的Istio VirtualService和DestinationRule

    本例的服务调用链:

    customer -> preference -> recommendation
    

    下面只说明与recommendation相关的Istio配置。

    其中recommendation有两个版本v1和v2。

    DestinationRule示例:

    apiVersion: networking.istio.io/v1alpha3
    kind: DestinationRule
    metadata:
      name: recommendation
    spec:
      host: recommendation
      subsets:
        - labels:
            version: v1
          name: version-v1
        - labels:
            version: v2
          name: version-v2
    

    配置在调用recommendation时,传入HTTP header baggage-is-ab-testtrue 时路由分发到新版本v2,否则都分发到原版本v1。

    VirtualServcie示例:

    apiVersion: networking.istio.io/v1alpha3
    kind: VirtualService
    metadata:
      name: recommendation
    spec:
      hosts:
        - recommendation
      http:
        - match:
            - headers:
                baggage-is-ab-test:
                  exact: "true"
          route:
            - destination:
                host: recommendation
                subset: version-v2
        - route:
            - destination:
                host: recommendation
                subset: version-v1
    
    

    参见:

    测试

    Postman测试

    在Postman上测试:

    • 测试不传入HTTP header时,返回结果都是v1。
    • 测试传入HTTP header为baggage-is-ab-testtrue时,返回结果都是v2。
    • 测试传入HTTP header为baggage-is-ab-testfalse时,返回结果都是v1。
    • 测试传入HTTP header为其他字段时,返回结果都是v1。

    Curl测试

    说明:http://customer.example.com 为本例的Isito Ingress Gateway地址。

    测试不传入HTTP header时,返回结果都是v1:

    while true; do
      curl http://customer.example.com
    done
    

    测试传入HTTP header为baggage-is-ab-testtrue时,返回结果都是v2:

    while true; do
      curl -H "baggage-is-ab-test:true" http://customer.example.com
    done
    

    测试传入HTTP header为baggage-is-ab-testfalse时,返回结果都是v1:

    while true; do
      curl -H "baggage-is-ab-test:false" http://customer.example.com
    done
    

    测试传入HTTP header为其他字段时,返回结果都是v1:

    while true; do
      curl -H "is-ab-test:true" http://customer.example.com
    done
    
    while true; do
      curl -H "baggage-test:true" http://customer.example.com
    done
    

    JMeter测试

    1. 在Test Plan下创建Thread Group:
      • Number of Threads (users): 50
      • Ramp-up period (seconds): 2
      • Loop Count: 1000
    2. 在Thread Group下添加Sample为HTTP request,输入HTTP request的Path。
    3. 在HTTP request下添加Listener,选择View Results Tree。
    4. 在HTTP request下添加Config Element为HTTP Header Manager,添加Header名称为baggage-is-ab-test,值为true来测试。
    5. 在Kiali上查看服务流量。
    展开全文
  • ab压力测试

    2019-05-07 13:56:50
    apache自带ab工具,可以测试 apache、IIs、tomcat、nginx等服务器 但是ab没有Jmeter、Loadrunner那样有各种场景设计、各种图形报告和监控,只需一个命令即可,有输出描述 可以简单的进行一些压力测试 测http接口用...
    ab是一种用于测试Apache超文本传输协议(HTTP)服务器的工具。apache自带ab工具,可以测试
    

    apache、IIs、tomcat、nginx等服务器
    但是ab没有Jmeter、Loadrunner那样有各种场景设计、各种图形报告和监控,只需一个命令即可,有输出描述
    可以简单的进行一些压力测试

    在这里插入图片描述

    测http接口用ab.exe
    测试https接口,用abs.exe

    例如输入:
    ab -n 100 -c 10 https://www.baidu.com/
    -n 指总请求数 -c设置并发数

    Wx-MacBookPro:apache2 wuxi$ ab -n 100 -c 10 https://www.baidu.com/
    This is ApacheBench, Version 2.3 <$Revision: 1757674 $>
    Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
    Licensed to The Apache Software Foundation, http://www.apache.org/
    //apache版本信息
    Benchmarking www.baidu.com (be patient)…done

    Server Software: BWS/1.1
    //请求返回header类型,可能是nginx、apache、IIs等
    Server Hostname: www.baidu.com
    //请求ip或者域名
    Server Port: 443
    //请求端口,当前请求为https所以端口为443,请求https端口80
    SSL/TLS Protocol: TLSv1.2,ECDHE-RSA-AES128-GCM-SHA256,2048,128
    //https端口协议
    TLS Server Name: www.baidu.com

    Document Path: /
    //路径
    Document Length: 227 bytes
    //第一个成功返回的文档的字节大小
    Concurrency Level: 10
    //并发数!!!
    Time taken for tests: 1.034 seconds
    //从建立连接到最后接受完成总时间
    Complete requests: 100
    //总请求数成功的
    Failed requests: 0
    //失败的
    Total transferred: 87200 bytes
    //从服务器接收的字节总数
    HTML transferred: 22700 bytes
    //HTML接收字节数
    Requests per second: 96.75 [#/sec] (mean)
    ————每秒请求数(总请求数/总时间)
    Time per request: 103.359 [ms] (mean)
    ————用户平均请求等待时间=concurrency * timetaken * 1000 / done
    参考Jmeter、LR中的平均响应时间
    Time per request: 10.336 [ms] (mean, across all concurrent requests)
    ————服务器处理每个请求平均响应时间=timetaken * 1000 / done
    Transfer rate: 82.39 [Kbytes/sec] received

    Connection Times (ms)
    min mean[+/-sd] median max
    Connect: 41 75 16.1 74 121
    Processing: 10 23 12.7 19 63
    Waiting: 10 21 10.8 18 54
    Total: 62 99 18.5 97 168
    //网络连接情况
    Percentage of the requests served within a certain time (ms)
    50% 97
    66% 104
    75% 107
    80% 110
    90% 126
    95% 138
    98% 148
    99% 168
    100% 168 (longest request)
    //整体响应时间的分布比

    展开全文
  • ab 压力测试

    2013-04-11 14:40:06
    apache自带的ab的压力测试: 以前安装好APACHE总是不知道该如何测试APACHE的性能,现在总算找到一个测试工具了。就是APACHE自带的测试工具AB(apache benchmark).在APACHE的bin目录下。 格式: ./ab [options] ...

    apache自带的ab的压力测试:

    以前安装好APACHE总是不知道该如何测试APACHE的性能,现在总算找到一个测试工具了。就是APACHE自带的测试工具AB(apache benchmark).在APACHE的bin目录下。
    格式: ./ab [options] [http://]hostname[:port]/path
    参数:
    -n requests Number of requests to perform
    //在测试会话中所执行的请求个数。默认时,仅执行一个请求
    -c concurrency Number of multiple requests to make
    //一次产生的请求个数。默认是一次一个。
    -t timelimit Seconds to max. wait for responses
    //测试所进行的最大秒数。其内部隐含值是-n 50000。它可以使对服务器的测试限制在一个固定的总时间以内。默认时,没有时间限制。
    -p postfile File containing data to POST
    //包含了需要POST的数据的文件.
    -T content-type Content-type header for POSTing
    //POST数据所使用的Content-type头信息。
    -v verbosity How much troubleshooting info to print
    //设置显示信息的详细程度 - 4或更大值会显示头信息, 3或更大值可以显示响应代码(404, 200等), 2或更大值可以显示警告和其他信息。 -V 显示版本号并退出。
    -w Print out results in HTML tables
    //以HTML表的格式输出结果。默认时,它是白色背景的两列宽度的一张表。
    -i Use HEAD instead of GET
    // 执行HEAD请求,而不是GET。
    -x attributes String to insert as table attributes
    //
    -y attributes String to insert as tr attributes
    //
    -z attributes String to insert as td or th attributes
    //
    -C attribute Add cookie, eg. 'Apache=1234. (repeatable)
    //-C cookie-name=value 对请求附加一个Cookie:行。 其典型形式是name=value的一个参数对。此参数可以重复。
    -H attribute Add Arbitrary header line, eg. 'Accept-Encoding: gzip'
    Inserted after all normal header lines. (repeatable)
    -A attribute Add Basic WWW Authentication, the attributes
    are a colon separated username and password.
    -P attribute Add Basic Proxy Authentication, the attributes
    are a colon separated username and password.
    //-P proxy-auth-username:password 对一个中转代理提供BASIC认证信任。用户名和密码由一个:隔开,并以base64编码形式发送。无论服务器是否需要(即, 是否发送了401认证需求代码),此字符串都会被发送。
    -X proxy:port Proxyserver and port number to use
    -V Print version number and exit
    -k Use HTTP KeepAlive feature
    -d Do not show percentiles served table.
    -S Do not show confidence estimators and warnings.
    -g filename Output collected data to gnuplot format file.
    -e filename Output CSV file with percentages served
    -h Display usage information (this message)
    //-attributes 设置 属性的字符串. 缺陷程序中有各种静态声明的固定长度的缓冲区。另外,对命令行参数、服务器的响应头和其他外部输入的解析也很简单,这可能会有不良后果。它没有完整地实现 HTTP/1.x; 仅接受某些'预想'的响应格式。 strstr(3)的频繁使用可能会带来性能问题,即, 你可能是在测试ab而不是服务器的性能。
    参数很多,一般我们用 -c 和 -n 参数就可以了

     

    ab -c 10 -n 1000 http://localhost/index.php

    -n1000 总请求数
    -c10  并发用户数

     

     

    展开全文
  • 先简单介绍下abab是apache自带的一个轻型压力测试工具,使用简单,安装方便,一般可以在apache的bin目录下找到,直接使用cmd进入apache的bin目录,输入ab -help查看使用帮助, 若出现以下页面则说明可以正常使用:...

    先简单介绍下ab,ab是apache自带的一个轻型压力测试工具,使用简单,安装方便,一般可以在apache的bin目录下找到,直接使用cmd进入apache的bin目录,输入ab -help查看使用帮助, 若出现以下页面则说明可以正常使用:


           若不能正常使用或者apache的bin目录下找不到ab.exe,则可以自行网上下载ab.exe,在cmd下进入ab.exe目录下使用即可。

           具体的参数使用就不一一介绍了,本文主要说明-n -c  -T -p -H 参数,这几个是在进行带多个header信息的post请求压力测试中要用到的。

    -n  指定请求数   如 -n1000  指向要测试的url发送1000个请求

    -c  并发数,也就是一次发送多少请求  如-c100  说明每次发送100个请求

    -T  post发送的数据类型,也就是header中content-type的值  如-T application/json 说明发送的是json数据

    -p  使用post发送数据,后面跟发送内容,以文件路径的形式  如 -p data.txt 说明用post发送data.txt里面的内容,要注意的是data.txt里面的数据格式要和-T中声明的一致,如-T application/json 则data.txt格式就必须以{"name1":"xxx","name2":"xxx"}的形式
    -H 在header中添加信息   如-H “token:xxx” 则指在header中增加一行token:xxx的信息,但是增加多行信息-help中没有说明,在试过各种分割方式之后,绝望的发现增加多行header信息只需要再加一个-H就行,如 -H “token:xxx” -H “client:xxx” 就可以同时增加两行header信息

    最后跟上要测试的url就行,最终命令为:

    ab -p data.txt -T application/json -H "client:xxx" -H "token:xxx" -n400 -c400 http://localhost:8080/xxx

    指以post形式一次发送400个request给http://localhost:8080/xxx,request body的内容为data.txt,request header 的内容为"content-type:application/json  client:xxx  token:xxx"。

    返回的信息含义就不多说了,自行查找。

    展开全文
  • yum -y install httpd-...ab -v 查看ab版本 ab –helpab -n1000 -c 10 http://www.91cnm.com/访问1000次。并发10个,我的小网站挂在虚拟主机上的 Server Software: Apache #服务器软件 Server Hostname: www.91cnm.co
  • Ab压力测试说明

    千次阅读 2016-09-02 21:25:21
    以前安装好APACHE总是不知道...就是APACHE自带的测试工具AB(apache benchmark).在APACHE的bin目录下。 格式: ./ab [options] [http://]hostname[:port]/path ab.exe -c 200 -n 1000 127.0.0.1/mvc/index.php  //
  • linux 下ab压力测试

    2018-07-02 15:51:05
    ab非常实用,它不仅可以对apache服务器进行网站访问压力测试,也可以对或其它类型的服务器进行压力测试。比如nginx、tomcat、IIS等 2.ab的原理 ab的原理:ab命令会创建多个并发访问线程,模拟多个访问者同时对某...
  • Apache AB性能测试工具使用教程

    千次阅读 2017-08-30 09:52:21
    Apache AB性能测试工具使用教程
  • ab测试

    2020-02-05 12:20:44
    ab非常实用,它不仅可以对apache服务器进行网站访问压力测试,也可以对或其它类型的服务器进行压力测试。比如nginx、tomcat、IIS等 2.ab的原理 ab的原理:ab命令会创建多个并发访问线程,模拟多个访问者同时对某一...
  • ab 压力测试使用

    千次阅读 2019-08-27 11:58:01
    说明 ...-H header -p body 将body中 json 串写到 a.json 中 -T POST数据所使用的Content-type头信息 举例 ab -n 100 -c 10 https://www.baidu.com ab -n 1 -c 1 -p f:/a.txt -T app...
  • 转载请注明出处:... 安装 yum -y install httpd-tools 参数解释 [root@binghe100 ~]# ab ab: wrong number of arguments Usage: ab [options] [http[s]://]hostna...
  • linux 下ab压力测试 1.ab的简介 ab是apachebench命令的缩写。 ab是apache自带的压力测试工具。ab非常实用,它不仅可以对apache服务器进行网站访问压力测试,也可以对或其它类型的服务器进行压力测试。比如nginx...
  • ab压力测试工具

    2015-10-22 19:43:22
    ab(apache bench)是web服务器APACHE自带的压力测试工具。它通过模拟多个客户端同时对web服务器发起请求,对WEB服务器的并发性能进行测试。对于一般的服务器端程序,ab也提供了一种并发性测试的思路。本文将对ab的...
  • 修改Apache AB 工具,使其能够从文件中读取压力/性能测试的 url、header、cookie信息,并采用这些信息进行随机组合访问的压力和性能测试。   解决方案: 1. 如何从文件中读取url、header、cookie信息,并保证该...
  • 要求时间的单curl测试的方式如下: time curl http://xxxxx/hq/restapi/isStart curl用来用post请求,且有header及请求内容 time curl -X POST -H "Content-Type: application/json" -H "Cache-Contr...
  • ab压力测试介绍

    千次阅读 2014-04-09 20:05:21
    1 环境搭建 wget http://mirrors.cnnic.cn/apache//httpd/httpd-2.4.7.tar.gz tar zxvf httpd-2.4.7.tar.gz cd httpd-2.4.7 ./configure make –j4 ..../ab -h ...只需要把ab编译出来即可,路径

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,702
精华内容 6,280
关键字:

abheader测试