首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >http压测工具推荐和体验报告

http压测工具推荐和体验报告

原创
作者头像
用户1311276
修改2020-08-17 10:36:33
3.1K0
修改2020-08-17 10:36:33
举报
文章被收录于专栏:吉诺迈克吉诺迈克

在工作中开发完需求,经常要做一些功能、性能的测试。

功能测试用python、shell之类的脚本,勉强可以胜任。性能压力测试再手动写脚本,就有点力不从心了。

给大家推荐一些常用的工具和其中部分工具的体验报告:

Apache Bench

JMeter

wrk https://github.com/wg/wrk

Locust python

loadrunner https://softwaresupport.softwaregrp.com/doc/KM02004789?fileName=LR_12.50_Tutorial_zh.pdf

webbench

Gatling

一、Locust体验

安装步骤:

1、最新版本的Locust不支持python 2了,最后支持python 2 的版本是 0.13.5,下载地址https://github.com/locustio/locust/releases?after=0.14.2

2、编译 python setup.py build

安装会报缺少依赖,因为机器没有外网,需要去https://pypi.org/手动下载依赖

我采用的方法是通过 ~/.pip/pip.conf 配置一个公司的镜像源,配置方法

[global] index-url = 公司镜像源地址

3、安装 python setup.py install

安装完成后执行,locust --help 如果没有报错,则安装成功

运行方式:

locust -f besttest.py --host=http://127.0.0.1 -P 8080 --loglevel ERR

besttest.py 可以自行上网搜索教程,简单例子:

from locust import HttpLocust, TaskSet, task
class BestTest(TaskSet):
    @task
    def index(self):
        self.client.get('/')

class BestTestIndexUser(HttpLocust):
    task_set = BestTest
    min_wait = 0
    max_wait = 0

    def wait_time(self):
        return 0.001

优点:

1、有图形界面展示压测过程的数据(qps、时延)变化

2、有集群模式,可以把多台机器上的locust组成一个集群,来提高压测qps

缺点:

1、性能比ab、wrk等差不少

python单进程只跑在一个核,单实例最多压到 700左右,单核CPU 100%。

2、大压力下,耗时统计不准

locust 跑在单独一台机器上,压的是另一台机器上的nginx的静态页面,nginx几乎没耗啥cpu。从nginx的日志看,耗时都为0,但是从locust的结果看,平均耗时却有10ms。

二、ab-apache benchmark体验

apache自带的工具,安装比较简单,安装步骤略。

运行方式:

ab -n 10000000 -c 100 http://host:port/

ab -n 1000000 -c 100 -k http://host:port/

是单进程单线程的方式运行,-k 参数复用长连接,显著提高性能。

优点:

ap测试性能很高,没有locust的只跑在单核的问题。

测试用的8核的cvm,压nginx的静态页面。

1、不加-k参数,短连接,能跑到 2w+ qps。ab进程CPU占用在80%。分摊到多个核,每个核才 10%。

2、加-k参数,长连接,能跑到 8w+ qps。ab进程CPU占用仍然只有80%

缺点:

1、无图形界面,不像locus那样能实时展示qps和时延变化曲线。只有一个最终的简单分析报告。

2、无法实现复杂业务逻辑,只适合静态页面。

三、JMeter 体验

安装步骤:

直接去官网 https://jmeter.apache.org/download_jmeter.cgi

下载最新版本,无需安装即可直接使用。java实现,windows和linux是同一个包。

运行方式:

1、新建线程组,可以配置测试并发线程数等

2、增加模版,可以配置通一些用的请求参数,测试地址和代理等

3、增加用户参数,可以配置测试集公用的参数

4、增加实际请求组件,每个组件为一个测试case

4.1 可以通过JSR223预处理程序,设置每个请求的参数,包括计算签名、设置用户变量等业务相关的逻辑。

4.2 可以自定义http头、http cookie等信息。

5、增加各种监听器来查看测试case集的执行结果。jmeter提供了很多查看结果的方式,包括图形、表格、详细信息等,具体可以查看官方文档: https://jmeter.apache.org/usermanual/component_reference.html#listeners

6、在windows下构建好测试case后,在linux下用命令行启动测试case:

./bin/jmeter.sh -n -t ./ci_asr_test_mikenwang.jmx -l test.result -e -o test.folder

优点:

1、可以通过java/beanshell、javascript、groovy等脚本语言、以及jmeter本身的逻辑器控制编写复杂的测试case

2、有集群方式

缺点:

对于简单测试比较重,上手略复杂

总结:

1、无复杂业务逻辑、且对qps要求较高的建议用ab、wrk

2、qps在几百以内、且有复杂业务逻辑(用python编程实现)的测试,建议用locust

3、qps要求较高、且有复杂业务逻辑(用java、js、groovy等支持JSR223标准的开发语言)、且需要比较详尽的测试报表的,建议用jmeter

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、Locust体验
    • 安装步骤:
      • 运行方式:
        • 优点:
          • 缺点:
          • 二、ab-apache benchmark体验
            • 运行方式:
              • 优点:
                • 缺点:
                  • 三、JMeter 体验
                    • 安装步骤:
                      • 运行方式:
                        • 优点:
                          • 缺点:
                          • 总结:
                          相关产品与服务
                          腾讯云 BI
                          腾讯云 BI(Business Intelligence,BI)提供从数据源接入、数据建模到数据可视化分析全流程的BI能力,帮助经营者快速获取决策数据依据。系统采用敏捷自助式设计,使用者仅需通过简单拖拽即可完成原本复杂的报表开发过程,并支持报表的分享、推送等企业协作场景。
                          领券
                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档