curl模拟GET/POST请求、ab压力测试

curl

在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具。它支持文件的上传和下载,是综合传输工具,但按传统,习惯称url为下载工具。 常见参数介绍:

-A/--user-agent <string>          设置用户代理发送给服务器
-b/--cookie <name=string/file>    cookie字符串或文件读取位置
-c/--cookie-jar <file>            操作结束后把cookie写入到这个文件中
-C/--continue-at <offset>         断点续转
-D/--dump-header <file>           把header信息写入到该文件中
-d/--data <data>                  HTTP POST方式传送数据
-e/--referer                      来源网址
-f/--fail                         连接失败时不显示http错误
-H/--header <line>                自定义头信息传递给服务器
-o/--output                       把输出写到该文件中
-O/--remote-name                  把输出写到该文件中,保留远程文件的文件名
-r/--range <range>                检索来自HTTP/1.1或FTP服务器字节范围
-s/--silent                       静音模式。不输出任何东西
-T/--upload-file <file>           上传文件
-u/--user <user[:password]>       设置服务器的用户和密码
-w/--write-out [format]           什么输出完成后
-x/--proxy <host[:port]>          在给定的端口上使用HTTP代理
-X/--request <command>            指定什么命令
-v                                显示请求交互的详细信息
                                    * 表示 curl 任务;
                                    > 发送的信息;
                                    < 返回的信息
-#/--progress-bar                 进度条显示当前的传送状态

curl GET请求

  • curl -v 127.0.0.1:8080/login Method:GET
    curl模拟GET/POST请求、ab压力测试_第1张图片
  • curl -v 127.0.0.1:8080/upload Method:GET
    curl模拟GET/POST请求、ab压力测试_第2张图片
  • curl -v 127.0.0.1:8080/static/images/favicon.ico >> favicon.ico Method: GET (获取文件数据保存到文件中)
    curl模拟GET/POST请求、ab压力测试_第3张图片

curl POST请求

  • curl -v 127.0.0.1:8080/login -X POST -d "username=liuyh73&&password=acwab" Method:POST
    curl模拟GET/POST请求、ab压力测试_第4张图片
    如果post信息为json格式的数据,则可以使用-H参数来声明请求的Content-Type:
curl -v 127.0.0.1:8080/login -X POST -H "Content-Type:application/json" -d '"username": "liuyh73", "password":"acwab"'
  • curl -v 127.0.0.1:8080/upload -F "uploadfile=@E:/mygo/src/github.com/liuyh73/go-web-form/static/images/favicon.ico" Method:POST
    curl模拟GET/POST请求、ab压力测试_第5张图片

ab(apache benchmark)

-n  即requests,用于指定压力测试总共的执行次数。
-c  即concurrency,用于指定的并发数。
-t  即timelimit,等待响应的最大时间(单位:秒)。
-b  即windowsize,TCP发送/接收的缓冲大小(单位:字节)。
-p  即postfile,发送POST请求时需要上传的文件,此外还必须设置-T参数。
-u  即putfile,发送PUT请求时需要上传的文件,此外还必须设置-T参数。
-T  即content-type,用于设置Content-Type请求头信息,例如:application/x-www-form-urlencoded,默认值为text/plain。
-v  即verbosity,指定打印帮助信息的冗余级别。
-w  以HTML表格形式打印结果。
-i  使用HEAD请求代替GET请求。
-x  插入字符串作为table标签的属性。
-y  插入字符串作为tr标签的属性。
-z  插入字符串作为td标签的属性。
-C  添加cookie信息,例如:"Apache=1234"(可以重复该参数选项以添加多个)。
-H  添加任意的请求头,例如:"Accept-Encoding: gzip",请求头将会添加在现有的多个请求头之后(可以重复该参数选项以添加多个)。
-A  添加一个基本的网络认证信息,用户名和密码之间用英文冒号隔开。
-P  添加一个基本的代理认证信息,用户名和密码之间用英文冒号隔开。
-X  指定使用的和端口号,例如:"126.10.10.3:88"。
-V  打印版本号并退出。
-k  使用HTTP的KeepAlive特性。
-d  不显示百分比。
-S  不显示预估和警告信息。
-g  输出结果信息到gnuplot格式的文件中。
-e  输出结果信息到CSV格式的文件中。
-r  指定接收到错误信息时不退出程序。
-h  显示用法信息,其实就是ab -help。
  • 安装:CentOS环境sudo yum -y install httpd-tools
    curl模拟GET/POST请求、ab压力测试_第6张图片
  • ab -c 100 -n 10000 localhost:8080/login
    curl模拟GET/POST请求、ab压力测试_第7张图片
    curl模拟GET/POST请求、ab压力测试_第8张图片

你可能感兴趣的:(服务计算)