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" ] }
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
通过代理服务器发送请求,您需要在其配置文件中设置代理服务器的详细信息。以下是具体步骤:-
找到
siege
的配置文件: -
编辑配置文件:
-
添加代理服务器设置:
在
.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
现在,当您使用 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
通过该代理发送请求
{ "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
通过该代理发送请求,可以使用以下步骤: