简单压测

通过 Homebrew 安装 ApacheBench

使用 ApacheBench

  • 安装 ApacheBench:在终端中运行以下命令:
    shell
    1brew install httpd
    这将安装 Apache HTTP 服务器,ApacheBench 作为其一部分被一同安装。
  • 确保 ab 命令可用:在终端中运行 ab -V,您应该看到类似于以下的输出,显示 ApacheBench This is ApacheBench, Version 2.3 <$Revision: 1879490 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/

现在,您已经成功安装了 ApacheBench,可以开始使用它进行压力测试了。以下是一个简单的示例,展示了如何使用 ApacheBench 对网站进行压力测试:

shell
1ab -n 1000 -c 100 http://example.com/

这将发起 1000 个请求(-n 1000),每次并发 100 个请求(-c 100),目标网站为 http://example.com/。

socket: Too many open files (24)

该错误提示意味着系统中打开文件的数量已经达到了操作系统的限制。在 UNIX 和类 UNIX 系统中,每个进程都有一个限制,限制该进程可以同时打开的文件数。当进程超过此限制时,将无法打开更多文件,并且会发生 "Too many open files" 错误。

调整应用程序的文件打开限制:如果应用程序使用的文件打开限制太低,则需要将其限制增加到合适的水平。例如,如果您使用 Node.js,可以通过 ulimit 命令将文件打开限制提高到更高的数字。例如,以下命令将文件打开限制设置为 65535:

shell
1ulimit -n 65535

使用 JMeter

  • 安装:brew install jmeter
  • 启动: jmter
  • 创建测试计划:
    • 打开JMeter后,您将看到一个名为“Test Plan”的节点。右键单击它,然后选择“Add” > “Threads (Users)” > “Thread Group”以添加线程组。线程组表示一组并发用户。
    • 在Thread Group设置中,可以调整以下参数:
      • Number of Threads (users):模拟的并发用户数。
      • Ramp-Up Period (in seconds):多少秒内达到完全并发。
      • Loop Count:每个用户要执行多少次请求。
  • 添加采样器:
    • 采样器用于定义发送给服务器的请求。右键单击刚刚添加的Thread Group,然后选择“Add” > “Sampler”。根据需要选择不同类型的采样器,如HTTP请求、FTP请求等。对于Web应用,通常选择“HTTP Request”采样器。
    • 配置采样器的相关参数,例如:请求方法(GET、POST等)、服务器名称或IP地址、端口、路径等。
  • 添加监听器:
    • 监听器用于收集和显示测试结果。右键单击Thread Group,然后选择“Add” > “Listener”,选择所需的监听器类型。常用的监听器有“View Results Tree”(查看每个请求的详细结果)和“Summary Report”(查看汇总报告)。
    • 您可以同时添加多个监听器以查看不同类型的结果数据。
  • 执行测试:
    • 准备好测试计划后,点击工具栏上的绿色三角形按钮,或者按Ctrl+R开始测试。测试结束后,可以在监听器中查看结果数据。
  • 保存和加载测试计划:
    • 在JMeter中,可以将测试计划保存为.jmx文件,以便将来重新加载和执行。点击工具栏上的保存按钮或按Ctrl+S来保存测试计划。

查看测试结果

JMeter可以提供失败请求的详细信息,帮助您更好地了解失败原因。在JMeter中,您可以通过添加监听器来查看和分析测试结果。有关失败请求的信息,建议使用以下监听器:

  1. View Results Tree:此监听器显示每个请求的详细信息,包括请求参数、响应头、响应数据等。要添加此监听器,请右键单击Thread Group,然后选择“Add” > “Listener” > “View Results Tree”。在测试执行过程中或测试结束后,您可以在“View Results Tree”监听器中查看失败的请求(红色高亮表示失败)。点击失败的请求,您可以在“Sampler result”选项卡中看到失败的原因以及响应状态码和错误消息。
  2. Assertion Results:如果您在测试计划中使用了断言来验证服务器响应是否符合预期,您还可以通过“Assertion Results”监听器查看断言失败的详细信息。要添加此监听器,请右键单击Thread Group,然后选择“Add” > “Listener” > “Assertion Results”。测试执行后,此监听器将显示所有断言失败的请求以及失败原因。

三种 content-type 以及在 JMeter 中对应的参数输入方式

  • content-type: application/x-www-form-urlencoded
    默认的。如果不指定 content-type,默认使用此格式。
    参数格式:key1=value1&key2=value2
  • content-type: application/json 参数为json格式  { "key1": "value1", "key2": "value2" }
  • content-type: multipart/form-data

右键 Add -> Config Element 可以设置 header 和 cookie 等