首页 > 其他分享 >如何使用Siege进行压测?

如何使用Siege进行压测?

时间:2023-08-21 14:37:48浏览次数:25  
标签:http 请求 如何 Siege siege 代理服务器 压测 JSON proxy

Siege是一个HTTP/HTTPS负载测试和基准测试工具,可以模拟多个用户同时访问一个URL。

centos安装Siege

sudo yum install epel-release
sudo yum install siege

使用siege模拟20个并发用户。

siege -c 20 -r 1 http://your_api_endpoint_here/

其中:

-c 20 表示20个并发用户。
-r 1 表示每个用户仅发送1次请求。

请请求内容封装到文本里调用

假设要测试如下请求:

curl --location 'https://api.abcd.org/api/old-style' \
--header 'api-key: quickstart-14dJIGlzIGNvbWluZy4uLi98' \
--form 'text="Draw a cartoon panda"'

要使用siege模拟上述的curl请求并使20个并发用户发起请求,可以使用以下命令:

首先,创建一个名为urls.txt的文件,并将以下内容添加到该文件中:

https://api.abcd.org/api/old-style POST api-key=quickstart-14dJIGlzIGNvbWluZy4uLi98 text=Draw+a+cartoon+panda

然后,使用siege运行测试:

siege -c 20 -r 1 -f urls.txt

其中:

-c 20 表示20个并发用户。
-r 1 表示每个用户只请求一次。
-f urls.txt 指示siege从urls.txt文件中读取要测试的URL。

JSON POST数据测试方式

下面的这个接口请求,转写成可以放到urls.txt里供siege使用的文本:

curl --location --request POST 'https://myendpoint.test.com/system/replace/io' \
--header 'token: bd66fc8b8380483da5bd4d6de96b357d' \
--header 'Content-Type: application/json' \
--data-raw '{
"requestIds": [
"20230709132535568E490BBEAB7AAD1D3F"
]
}'

要在siege中模拟POST请求,需要将请求数据和HTTP方法包含在urls.txt文件中。

请按照以下步骤操作:

创建一个名为post_data.txt的文件,其中包含以下内容:

{
"requestIds": [
"20230709132535568E490BBEAB7AAD1D3F"
]
}

在urls.txt文件中添加以下内容:

https://myendpoint.test.com/system/replace/io POST < post_data.txt

使用siege运行测试:

可以在siege命令行中引用urls.txt文件,并添加所需的HTTP头:

siege -c 20 -r 1 -f urls.txt -H "token: bd66fc8b8380483da5bd4d6de96b357d" -H "Content-Type: application/json"

这应该能够模拟POST请求,并使用提供的JSON数据和HTTP头。

 

如何配置siege通过代理发送请求?

 要使 siege 通过代理服务器发送请求,您需要在其配置文件中设置代理服务器的详细信息。以下是具体步骤:
  1. 找到 siege 的配置文件:

    siege 默认在多个位置查找其配置文件,其中之一是 $HOME/.siegerc(对于用户特定的配置)。

  2. 编辑配置文件:

    使用您喜欢的文本编辑器打开 .siegerc 文件(如果该文件不存在,您可以创建一个)。

  3. 添加代理服务器设置:

    .siegerc 文件中,您可以添加以下两行来指定代理服务器的主机和端口:

    http-proxy-host = proxy_server_host http-proxy-port = proxy_server_port

    其中,proxy_server_host 是您的代理服务器的主机名或IP地址,而 proxy_server_port 是代理服务器的端口号。

    例如,如果您的代理服务器位于 192.168.1.100,端口为 8080,则应该添加以下行:

    http-proxy-host = 192.168.1.100 http-proxy-port = 8080
  4. 保存并关闭文件:

    保存您对 .siegerc 文件所做的更改,并关闭编辑器。

现在,当您使用 siege 运行测试时,它应该会通过指定的代理服务器发送请求。如果您只是暂时需要使用代理,而不希望修改配置文件,也可以使用环境变量 http_proxy 来指定代理,如:

export http_proxy=http://192.168.1.100:8080 siege -c 10 -r 1 http://www.example.com/

这将导致 siege 使用环境变量中指定的代理服务器,而不是配置文件中的设置。

从 JSON 文件中读取代理服务器的 IP 和端口,然后使用 siege 通过该代理发送请求

  json数据
{
    "code": "SUCCESS",
    "data": [{
        "proxy_ip": "123.54.55.24",
        "server": "123.54.55.24:59419",
        "area": "河南省商丘市",
        "isp": "电信",
        "deadline": "2023-02-25 15:38:36"
    }],
    "request_id": "83158ebe-be6c-40f7-a158-688741083edc"
}

要从 JSON 文件中读取代理服务器的 IP 和端口,然后使用 siege 通过该代理发送请求,可以使用以下步骤:

  1. 安装 jq: 首先,您需要一个命令行 JSON 解析器。jq 是一个轻量级且强大的命令行 JSON 解析器,可用于从 JSON 文件或字符串中读取数据。

    安装 jq 的方法取决于您的操作系统。例如,在大多数 Linux 发行版上,您可以使用包管理器进行安装:

    sudo apt install jq # 对于 Debian/Ubuntu sudo yum install jq # 对于 CentOS
  2. 从 JSON 文件中读取代理服务器的信息:

    使用 jq,您可以从 JSON 文件中读取 server 的值。例如,如果您的 JSON 文件名为 proxy_info.json

    PROXY_INFO=$(jq -r '.data[0].server' proxy_info.json)

    这会将代理服务器的 IP 和端口保存到 PROXY_INFO 变量中。

  3. 使用 siege 发送请求:

    有了代理信息后,您可以设置 http_proxy 环境变量并运行 siege

    export http_proxy=http://$PROXY_INFO siege -c 10 -r 1 http://www.example.com/

 

从一个接口获取 JSON 数据,可以使用 curl 或其他类似的工具获取数据,并结合 jq 从数据中提取所需信息。

以下是一个简单的示例,说明如何从远程接口获取 JSON 数据并提取代理信息,然后使用 siege 通过该代理发送请求:

  1. 获取 JSON 数据:

    使用 curl 调用远程接口并保存输出。例如,如果远程接口的 URL 为 https://api.example.com/getProxyInfo,您可以执行:

    JSON_DATA=$(curl -s https://api.example.com/getProxyInfo)

    这会将远程接口的输出保存到 JSON_DATA 变量中。

  2. 从 JSON 数据中提取代理服务器的信息:

    使用 jqJSON_DATA 变量中提取 server 的值:

    PROXY_INFO=$(echo $JSON_DATA | jq -r '.data[0].server')

    这会将代理服务器的 IP 和端口保存到 PROXY_INFO 变量中。

  3. 使用 siege 发送请求:

    设置 http_proxy 环境变量并运行 siege

    export http_proxy=http://$PROXY_INFO siege -c 10 -r 1 http://www.example.com/

整理成一个脚本

以下是一个简化的 bash 脚本,它从远程接口获取 JSON 数据、提取代理信息并使用 siege 通过该代理发送请求:
#!/bin/bash

# 获取 JSON 数据
JSON_DATA=$(curl -s https://api.example.com/getProxyInfo)

# 从 JSON 数据中提取代理服务器的信息
PROXY_INFO=$(echo $JSON_DATA | jq -r '.data[0].server')

# 设置 http_proxy 环境变量
export http_proxy=http://$PROXY_INFO

# 使用 siege 发送请求
siege -c 10 -r 1 http://www.example.com/

# 如果您不想长时间设置 http_proxy 变量,您可以在脚本结束后取消它
unset http_proxy

为了使用这个脚本:

  1. 将上述内容保存到一个文件中,例如 siege_proxy_test.sh

  2. 为该文件设置执行权限:

    chmod +x siege_proxy_test.sh
  3. 运行脚本:

    ./siege_proxy_test.sh

 

标签:http,请求,如何,Siege,siege,代理服务器,压测,JSON,proxy
From: https://www.cnblogs.com/shamo89/p/17645901.html

相关文章

  • 工业智能网关如何解决断网难题?
    在数字化、信息化快速发展的时代,各行各业都在逐步实现智能化、自动化发展,其中工业智能网关在物联网中的应用也是十分广泛。比如在制造业中,工业智能网关应用于设备监控、生产数据采集和远程故障排除;在能源行业中,工业智能网关可用于监测电力设备、油气管道和光伏系统等,及时传输实时数......
  • Spring缓存是如何实现的?如何扩展使其支持过期删除功能? | 京东云技术团队
    前言:在我们的应用中,有一些数据是通过rpc获取的远端数据,该数据不会经常变化,允许客户端在本地缓存一定时间。该场景逻辑简单,缓存数据较小,不需要持久化,所以不希望引入其他第三方缓存工具加重应用负担,非常适合使用SpringCache来实现。但有个问题是,我们希望将这些rpc结果数据缓存起来,并......
  • Lnton羚通算法算力云平台如何在OpenCV-Python中使用cvui库创建复选框
    CVUI之复选框Pythonimportnumpyasnpimportcv2importcvuidefcheckbox_test():WINDOW_NAME='Checkbox-Test'checked=[False]#创建画布frame=np.zeros((300,400,3),np.uint8)#初始化窗口cvui.init(WINDOW_NAME)while......
  • 如何以公司名义注册苹果开发者账号?
    如何以公司名义注册苹果开发者账号?更新时间:2023-01-3017:52:23苹果开发者账号有三种:个人开发者、公司开发者、企业开发者1)个人和公司开发者年费均为688人民币/年,由于个人开发者过审率较低,故建议以公司名义注册;2)企业开发者一般是大企业开发内部应用时使用,不能用于上架Ap......
  • Linux/centos上如何配置管理samba服务器?
    (Linux/centos上如何配置管理samba服务器?)1samba服务相关知识samba服务器可使用户在异构网络操作系统之间进行文件系统共享;samba服务器提供了在Windows环境下共享Linux中用户目录的一个工具;在linux中安装samba后,只需在windows中做一些登陆即可访问。1.1SMB协议Windows系......
  • Linux/centos上如何配置管理samba服务器?
    (Linux/centos上如何配置管理samba服务器?)1samba服务相关知识samba服务器可使用户在异构网络操作系统之间进行文件系统共享;samba服务器提供了在Windows环境下共享Linux中用户目录的一个工具;在linux中安装samba后,只需在windows中做一些登陆即可访问。1.1SMB协议Windows系......
  • 如何利用Go编辑Nginx规则实现动态操作Nginx配置
    随着微服务的普及和容器化技术的发展,Nginx作为一款高性能的Web服务器和反向代理服务器,被广泛应用于各种场景。然而,传统的静态编辑Nginx配置文件的方式,往往无法满足动态修改配置的需求。本文将介绍如何使用Go语言编辑Nginx规则,实现动态操作Nginx配置。安装依赖库在开始之......
  • php 如何实现检测nginx配置的正确性
    在Web服务器的搭建过程中,Nginx是一款非常流行的开源软件,它能够快速、高效地处理HTTP请求。为了保证Nginx服务器的稳定性和安全性,我们需要定期检测Nginx配置文件的正确性,以便及时发现并解决问题。本文将介绍如何使用PHP实现检测nginx配置的正确性。安装php-fpm首先需要安装php-fpm,它......
  • 如何复制word的图文到富文本框编辑器中自动上传
    ​  自动导入Word图片,或者粘贴Word内容时自动上传所有的图片,并且最终保留Word样式,这应该是Web编辑器里面最基本的一个需求功能了。一般情况下我们将Word内容粘贴到Web编辑器(富文本编辑器)中时,编辑器都无法自动上传图片。需要用户手动一张张上传Word图片。如果只有一张图片还能......
  • 两款主流报表控件FastReport与Stimulsoft对比评测!如何选?
    StimulsoftReports 是一款报告编写器,主要用于在桌面和Web上从头开始创建任何复杂的报告。可以在大多数平台上轻松实现部署,如ASP.NET,WinForms,.NETCore,JavaScript,WPF,Angular,Blazor,PHP,Java等,在你的应用程序中嵌入报告设计器或在线创建报告,支持从云端快速分享你的报......