# docker-siege **Repository Path**: chen1404276788/docker-siege ## Basic Information - **Project Name**: docker-siege - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-01-06 - **Last Updated**: 2024-01-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # siege压力测试 ## 介绍 `docker` 容器集成了`python3.10` + `openssl` + `siege` ## 完成版 ```bash docker run -itd --restart=always -p 5500:5500 --name gin-siege 1404276788/gin-siege:1.1 ``` 接口参考 `run.py` ## 自建教程 如要支持`https`测试,需要先安装`openssl`, 下载地址:https://github.com/openssl/openssl 安装openssl: ```bash wget https://www.openssl.org/source/openssl-1.1.1i.tar.gz tar -xzvf openssl-1.1.1i.tar.gz cd openssl-1.1.1i ./config --prefix=/usr/local/openssl make make install openssl version ``` 安装siege: siege下载地址:http://download.joedog.org/siege/siege-latest.tar.gz ```bash tar zxvf siege-4.0.5.tar.gz cd siege-4.0.5 make clean ./configure --prefix=/usr/local/siege --with-ssl=/usr/local/openssl make make install ``` windows安装siege 压力测试工具下载地址:https://github.com/ewwink/siege-windows/archive/master.zip 解压双层包,一定要保证根目录是 `C:\siege-windows` ,再把根目录配置成系统的环境变量(windows配置环境变量不用重启的方法),之后就可以直接使用。 命令参数 参数 | 描述 -----| ----- -V, --version | 显示版本号。 -h, --help | 显示帮助信息。 -C, --config | 显示当前配置。 -v, --verbose | 显示详细信息。 -q, --quiet | 静默模式,关闭详细输出。 -g, --get | 获取 HTTP 头信息并显示请求事务详情,用于应用程序调试。 -c, --concurrent=NUM | 并发用户数,默认为 10。 -i, --internet | 模拟互联网用户,随机访问 URL。 -b, --benchmark | 基准测试模式,请求之间没有延迟。 -t, --time=NUMm | 设置测试时间,"m" 是时间单位,可以是 S(秒)、M(分钟)或 H(小时),例如 --time=1H 表示进行一小时的测试。 -r, --reps=NUM | 设置测试重复次数。 -f, --file=FILE | 指定 URL 文件。 -R, --rc=FILE | 指定 siegerc 配置文件。 -l, --log[=FILE] | 将日志记录到文件中,如果不指定文件名,默认使用 PREFIX/var/siege.log。 -m, --mark="text" | 在日志文件中标记字符串。 -d, --delay=NUM | 设置每个请求之间的随机延迟,延迟时间介于 1 和 NUM 之间(不计入统计数据)。 -H, --header="text" | 添加请求头信息,可以使用多个 -H 选项来添加多个请求头。 -A, --user-agent="text" | 设置请求的 User-Agent。 -T, --content-type="text" | 设置请求的 Content-Type。 使用例子 1.基础用法 ```bash siege -c10 -r3 -p test_url ``` 2.带Header参数 ```bash siege -c10 -r10 -p --header="Authorization: Bearer weli3232r-swet2-834s-fwer-wegwt32r2" --header="token: weuriiower32l2" test_url ``` 3.带json格式参数 ```bash siege -c300 -r10 "test_url POST < params.json" ``` 4.批量url测试(url.txt里面一个url占一行,多个换行) ```bash siege -c9 -r1 -f url.txt ``` ## docker相关命令 ```bash docker build -t baiyea/docker-siege . # 构建镜像 docker run -it --privileged baiyea/docker-siege /bin/sh # 运行并进入容器 docker commit baiyea/ch-siege # 将容器另存为镜像 docker push baiyea/ch-siege # 将镜像推送到docker hub docker run -it --privileged baiyea/ch-siege /bin/sh # 运行并进入容器 ``` ## 使用方法 以该镜像为基础,使用`python`去启动`siege` # go-stress-testing使用方法 暂未集成到docker中 ```bash Usage of ./go-stress-testing-mac: -c uint 并发数 (default 1) -n uint 请求数(单个并发/协程) (default 1) -u string 压测地址 -d string 调试模式 (default "false") -http2 是否开http2.0 -k 是否开启长连接 -m int 单个host最大连接数 (default 1) -H value 自定义头信息传递给服务器 示例:-H 'Content-Type: application/json' -data string HTTP POST方式传送数据 -v string 验证方法 http 支持:statusCode、json webSocket支持:json -p string curl文件路径 ``` ## 用例 ```bash # 查看用法 ./go-stress-testing-mac # 使用请求百度页面 ./go-stress-testing-mac -c 1 -n 100 -u https://www.baidu.com/ # 使用debug模式请求百度页面 ./go-stress-testing-mac -c 1 -n 1 -d true -u https://www.baidu.com/ # 使用 curl文件(文件在curl目录下) 的方式请求 ./go-stress-testing-mac -c 1 -n 1 -p curl/baidu.curl.txt # 压测webSocket连接 ./go-stress-testing-mac -c 10 -n 10 -u ws://127.0.0.1:8089/acc # 更多参数 支持 header、post body ./go-stress-testing-mac -c 1 -n 1 -d true -u 'https://page.aliyun.com/delivery/plan/list' \ -H 'authority: page.aliyun.com' \ -H 'accept: application/json, text/plain, */*' \ -H 'content-type: application/x-www-form-urlencoded' \ -H 'origin: https://cn.aliyun.com' \ -H 'sec-fetch-site: same-site' \ -H 'sec-fetch-mode: cors' \ -H 'sec-fetch-dest: empty' \ -H 'referer: https://cn.aliyun.com/' \ -H 'accept-language: zh-CN,zh;q=0.9' \ -H 'cookie: aliyun_choice=CN; JSESSIONID=J8866281-CKCFJ4BUZ7GDO9V89YBW1-KJ3J5V9K-GYUW7; maliyun_temporary_console0=1AbLByOMHeZe3G41KYd5WWZvrM%2BGErkaLcWfBbgveKA9ifboArprPASvFUUfhwHtt44qsDwVqMk8Wkdr1F5LccYk2mPCZJiXb0q%2Bllj5u3SQGQurtyPqnG489y%2FkoA%2FEvOwsXJTvXTFQPK%2BGJD4FJg%3D%3D; cna=L3Q5F8cHDGgCAXL3r8fEZtdU; isg=BFNThsmSCcgX-sUcc5Jo2s2T4tF9COfKYi8g9wVwr3KphHMmjdh3GrHFvPTqJD_C; l=eBaceXLnQGBjstRJBOfwPurza77OSIRAguPzaNbMiT5POw1B5WAlWZbqyNY6C3GVh6lwR37EODnaBeYBc3K-nxvOu9eFfGMmn' \ -data 'adPlanQueryParam=%7B%22adZone%22%3A%7B%22positionList%22%3A%5B%7B%22positionId%22%3A83%7D%5D%7D%2C%22requestId%22%3A%2217958651-f205-44c7-ad5d-f8af92a6217a%22%7D' ```