Ddosify:高性能负载测试工具

市场上有超过50 种工具和解决方案可用于测试应用程序和服务的性能。现在是时候看看 Ddosify,这是一款高性能负载测试工具,它提供免费和商业功能来测试 HTTP(S)、HTTP/2 和其他协议上的 Web 应用程序和服务。在这篇博客文章中,让我们深入研究 Ddosify 工具,看看它是否能满足典型的性能工程师的需求。

在了解 Ddosify 之前,我们先来了解一下该工具的名称。Ddosify 包含Ddos术语。DDoS 代表分布式拒绝服务。以下是拒绝服务的维基百科条目:

在计算领域,拒绝服务攻击是一种网络攻击,攻击者试图通过暂时或无限期中断连接到互联网的主机的服务,使其目标用户无法使用机器或网络资源

攻击者瞄准一台机器并试图破坏其服务。术语“分布式”代表多个来源。攻击者不是从一个来源攻击系统,而是使用多个来源。

如果您出于良好意图尝试适应DDoSDdosify功能,您将获得.

什么是 Ddosify?

Ddosify是一个用 Golang 编写的高性能负载测试工具。它有两种风格:开源和商业。

支持HTTP(S)、HTTP/2协议(目前);其他协议正在制定中。

JSON 支持创建场景。

支持各种工作负载模型。

入门

由于 Ddosify 是基于 Golang 的,如果您想从源代码构建,先决条件是安装最新且稳定版本的 Golang,否则您可以下载二进制文件来开始。前往 https://golang.org/dl/ 安装 Golang。

要安装 Ddosify,您可以利用 Docker 或从源代码安装它。

docker run -it --rm ddosify/ddosify
go install -v go.ddosify.com/ddosify@latest

安装成功后,您可以通过发出以下命令来验证 Ddosify。

ddosify -version

快速开始

让我们针对演示应用程序开始快速负载测试。我正在端口 8080 上本地运行示例 Jetty 应用程序。要使用 Ddosify 开始测试,您可以发出以下命令。

ddosify -t http://localhost:8080/test/hello

上述命令在 10 秒内发送 100 个请求。下面是输出。在测试过程中,Ddosify 显示运行时状态。测试完成后,它将显示结果,包括 DNS、连接、请求写入、服务器处理、响应读取时间和总时间(以秒为单位)。

要终止测试,您可以按Ctrl + C

Ddosify:高性能负载测试工具

场景设计

现在让我们设计一个快速场景来测试 JSON 中的演示应用程序。复制并粘贴以下 JSON 并将其另存为config.json.

要开始测试,请发出ddosify -config .\config.json.

{
  "request_count": 20,
  "load_type": "linear",
  "duration": 5,
  "output": "stdout",
  "steps": [
    {
      "id": 1,
      "url": "http://localhost:8080/test/session/",
      "protocol": "http",
      "method": "POST",
      "headers": {
        "ContenType": "application/xml",
        "header1": "header2"
      },
      "payload": "Name=test&Value=test&Action=Set",
      "timeout": 3,      
      "others": {
        "keep-alive": true,
        "disableCompression": false,
        "h2": true,
        "disable-redirect": true
      }
    }    
  ]
}

上述场景在 5 秒内抛出 20 个请求(迭代)。下面是输出。

Ddosify:高性能负载测试工具

以下是在撰写本文时可用于 Ddosify 的各种标志。、

旗帜描述类型默认必需的?
-t 目标网站网址。例子: https://ddosify.comstring 是的
-n请求总数int100
-d测试持续时间(以秒为单位)。int10
-p请求的协议。支持的协议有 HTTP、HTTPS。HTTP/2 支持只能通过使用所描述的配置文件来获得。将添加更多协议。stringHTTPS
-m请求方法。HTTP 的可用方法有 GET、POST、PUT、DELETE、UPDATE、PATCHstringGET
-b网络数据包的有效负载。又名 HTTP 主体。string
-a基本身份验证。用法: -a username:passwordstring
-h请求的标头。您可以提供带有多个标志的多个 -h 标头。string
-T请求超时(以秒为单位)。int5
-P代理地址为主机:端口。 -P http://user:pass@proxy_host.com:port'string
-o测试结果输出目的地。将添加其他输出类型。stringstdout
-l
 负载测试的类型。Ddosify 支持 3 种负载类型。
stringlinear
-config
 负载测试的配置文件。
string
-version打印版本、git 提交、构建日期 (utc)、转到信息并退出

工作负载模型

目前,Ddosify 支持三种工作负载模型:线性、增量和波动。

线性有助于在一段时间内一致地注入负载。

增量注入负载逐渐增加。

波形像波峰和波谷一样注入负载。

您可以从系统发送多少个请求?

要确定系统上可以生成多少请求,完全取决于 CPU、内存和其他参数。您需要运行基准测试并总结您的发现。

我有两个内核和 16 GB RAM。Golang 基于一个由 Go 运行时管理的轻量级线程,称为 goroutine。Golang 比其他语言具有更好的并发性。您可以使用最少的资源轻松启动数百个线程。

我执行了 10000 个请求的测试。如您所见,负载与时间成正比。

Ddosify:高性能负载测试工具

当我注入 10000000 时,我观察到 ddos​​ify.exe 的 CPU 和内存很高,并且测试需要很长时间才能完成。我必须终止 exe 文件。这不是 DDosify 问题,而是我的系统配置问题。我的配置动力不足,无法用于运行非常高的负载。

Ddosify:高性能负载测试工具

全面的

如果您想以最少的配置快速运行非常高的负载,Ddosify 可能是一个不错的选择。它仍处于非常早期的阶段,并且缺少很多功能(参数化、逻辑操作、脚本编写等等)。商业版本尚未发布。我在等候名单上。我希望 Ddosify 团队最终能够开发出能够满足典型性能工程师需求的功能。我强烈建议您尝试使用 Ddosify 来 ddos​​ify 您的应用程序。

Ddosify:高性能负载测试工具

给TA打赏
共{{data.count}}人
人已打赏
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索