【问题标题】:How to simulate DDOS/Slashdotting?如何模拟 DDOS/Slashdotting?
【发布时间】:2011-07-18 22:31:50
【问题描述】:

所以,我想获得更多使用高流量网站的经验,但不幸的是,互联网并没有敲开我博客的大门。

如何在我的博客上模拟每秒数十/数百次点击并测试其性能?我在共享服务器上使用 SSH 帐户托管我的博客。

【问题讨论】:

    标签: apache nginx simulate ddos


    【解决方案1】:

    您可以使用以下工具向您的服务器发送大量请求:


    第一个,ab,只允许您向单个 URL 发送大量请求——这对单个脚本/页面进行基准测试非常有用;但不能反映用户浏览您网站的真实模式(例如,CSS/JS/图像无法加载)

    第二个,围攻,将允许您向文本文件中指定的 URL 列表发送请求——正确构建该 URL 列表(有一个代理)将给你做一些不错的测试。

    第三个,JMeter,将允许您创建更复杂的场景。
    那个更复杂,你需要一些时间来使用它——但这可能会让你得到最好的结果。

    【讨论】:

      【解决方案2】:

      HTTP(S) 基准测试工具、测试/调试和 restAPI (RESTful)

      按字母顺序排列(不喜欢)

      HTTP(S) 基准测试工具

      • ab – 慢速单线程,写在C
      • apib——ApacheBench 的大部分功能(ab),也设计成more modern replacement,写在C
      • baloo – 用 Go 编写的富有表现力的端到端 HTTP API 测试变得简单 (golang)
      • baton – HTTP 负载测试,用 Go 编写 (golang)
      • bombardier – 快速的跨平台 HTTP 基准测试工具,用 Go 编写 (golang)
      • curl-loader——各种应用服务的性能加载和流量生成,写在C
      • fasthttploader – 基于 fasthttp 库的自动调整和图表的基准测试(有点像 ab),用 Go 编写 (golang)
      • fortio - 负载测试库和命令行工具和 Web UI。允许指定一组每秒查询负载并记录延迟直方图和其他有用的统计数据,用 Go 编写 (golang)
      • gatling – 基于 Scala、Akka 和 Netty 的高性能负载测试框架,写在 Scala
      • go-wrk – 基于优秀 wrk 工具 (wg/wrk) 的 HTTP 基准测试工具,用 Go 编写 (golang)
      • goad – Goad 是一个由 AWS Lambda 驱动的高度分布式负载测试工具,用 Go 编写 (golang)
      • gobench – HTTP/HTTPS 负载测试和基准测试工具,用 Go 编写 (golang)
      • gohttpbench - ab-like 基准测试工具在多核 cpu 上运行,用 Go 编写 (golang)
      • hey - HTTP(S) 负载生成器,替代 ApacheBench (ab),以前称为 rakyll/boom,用 Go (golang) 编写
      • htstress – 多线程高负载基准测试服务 (>5K rps),写在 C/Linux
      • httperf – 配置困难,速度慢,单线程,写在C
      • inundator - 一个简单的高吞吐量HTTP洪水程序,写在C/Linux
      • jmeter – Apache JMeter™,纯应用程序,旨在对静态和动态资源进行负载测试性能,用 Java 编写
      • locust – 易于使用的分布式负载测试工具,带有实时 Web UI。模拟一群并发用户,每个用户的行为由您的 python 代码定义。写在Python
      • mgun – 一种现代的 HTTP 服务器负载测试工具,用 Go 编写 (golang)
      • pounce – 事件发生,但结果波动,有时比 htstress 快,写在 C
      • siege – 慢速单线程,写在C
      • slapper – 简单的负载测试工具,具有实时更新的请求时间直方图,用 Go 编写 (golang)
      • slow_cooker – 一个负载测试人员,专注于生命周期问题和长时间运行的测试,以可预测的负载和长期并发水平提供服务,用 Go 编写 (golang)
      • sniper – 强大的高性能 http 负载测试器,用 Go 编写 (golang)
      • tsung – 模拟压力用户以测试基于 IP 的客户端/服务器应用程序的可扩展性和性能HTTPWebDAVSOAPPostgreSQLMySQLLDAPJabber/ XMPP 服务器,写在 Erlang
      • vegeta – HTTP 负载测试工具和库,用 Go 编写 (golang)
      • weighttp - 多线程,但比没有 keepalive 的 htstress 慢,写在 C
      • wrk – 多线程~~,但不提供并发连接和保活开关~~,写在C/Lua
      • wrk2 – 恒定吞吐量,正确的 wrk 延迟记录变体,写在 C/Lua

        Concurrent connections are enabled with:
          -c, --connections <N>  Connections to keep open
        And keepalive (which is default) can be disabled using:
          -H "Connection: close"
        
      • yandex-tank – 负载和性能基准测试工具,用 Python/C|C++|Asm (phantom) 编写

      用于测试/调试 HTTP(S) 和 restAPI (RESTful) 的工具包

      • bat - Go 实现 CLI,类似 cURL 的人类工具,用 Go 编写 (golang)
      • curl - 功能强大的命令行工具,用于传输使用 URL 语法指定的数据,用 C 编写
      • curlconverter – 将 curl 命令转换为 python、javascript、php
      • httpie – 客户端,用户友好的 curl 替换,直观的 UI,JSON 支持,语法高亮,类似 wget 的下载,扩展,写在 Python
      • jq – 是一个轻量级且灵活的命令行 JSON 处理器,用 C 编写

      SaaS/PaaS

      • BlazeMeter – 为整个产品开发生命周期的整个技术团队(开发人员、devops、ops 和 QA)提供跨企业测试自动化框架。对 API、移动应用程序和网站运行连续或“按需”测试。从云端、本地或作为混合解决方案运行。与 JMeter 和 Selenium WebDriver 一起使用并与您现有的 CI、CD 和 APM 工具集成。
      • NewRelic – 开发人员、运维人员和软件公司使用软件分析工具套件来了解您的应用程序在开发和生产中的表现
      • NGINX Amplify – 直观地识别性能瓶颈、过载的服务器或潜在的 DDoS 攻击。通过智能建议和建议改进和优化 NGINX 性能。当您的应用程序交付出现问题时收到警报。规划 Web 应用程序的容量和性能。跟踪运行 NGINX 的系统1

      链接

      来源:https://github.com/denji/awesome-http-benchmark

      【讨论】:

        【解决方案3】:

        除了像 ab 这样显而易见的工具之外,您可能还想看看像 tsung 这样的东西——一个基于 erlang 的负载测试生成器。一个不错的功能是它能够执行分布式负载测试(即,将流量生成拆分到多台机器上)。

        【讨论】:

          【解决方案4】:

          我使用 jmeter 对我的 Web 应用程序进行负载测试。它可能会满足您的需求。

          http://jmeter.apache.org/

          【讨论】:

            【解决方案5】:

            Apache Bench 简单明了。有plenty of tutorials

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2019-07-28
              • 2019-01-04
              • 2020-05-12
              • 1970-01-01
              • 1970-01-01
              • 2014-11-26
              • 1970-01-01
              相关资源
              最近更新 更多