• golang压力测试工具


    golang压力测试工具

    1.go-wrk工具

    (1.) 下载安装

    go get github.com/adeven/go-wrk
    或者
    git clone git://github.com/adeven/go-wrk.git
    cd go-wrk
    go build
    

    (2.)使用

    go-wrk [flags] url
    go-wrk -t=8 -c=100 -n=10000 "http://127.0.0.1:8080/api/book"
    
    -H="User-Agent: go-wrk 0.1 bechmark\nContent-Type: text/html;": 由'\n'分隔的请求头
    -c=100: 使用的最大连接数
    -k=true: 是否禁用keep-alives
    -i=false: if TLS security checks are disabled
    -m="GET": HTTP请求方法
    -n=1000: 请求总数
    -t=1: 使用的线程数
    -b="" HTTP请求体
    -s="" 如果指定,它将计算响应中包含搜索到的字符串s的频率
    
    参考链接:https://github.com/adjust/go-wrk
    

    2.go-stress-testing

    (1.)下载

    https://github.com/link1st/go-stress-testing/releases
    

    (2.) 使用

    ./go-stress-testing -c 1 -n 100 -u https://www.baidu.com/
    
    参数说明:
    -c 表示并发数
    -n 每个并发执行请求的次数,总请求的次数 = 并发数 * 每个并发执行请求的次数
    -u 需要压测的地址
    
    耗时: 程序运行耗时。程序每秒钟输出一次压测结果
    
    并发数: 并发数,启动的协程数
    
    成功数: 压测中,请求成功的数量
    
    失败数: 压测中,请求失败的数量
    
    qps: 当前压测的QPS(每秒钟处理请求数量)
    
    最长耗时: 压测中,单个请求最长的响应时长
    
    最短耗时: 压测中,单个请求最短的响应时长
    
    平均耗时: 压测中,单个请求平均的响应时长
    
    错误码: 压测中,接口返回的 code码:返回次数的集合
    
    参考链接:https://github.com/link1st/go-stress-testing
    

    3.wrk安装使用

    (1.)安装

    # RPM 包安装
    wget https://github.com/scutse/wrk-rpm/releases/tag/4.1.0
    yum install xxx.rpm
    或者
    yum install -y https://github.com/scutse/wrk-rpm/releases/download/4.1.0/wrk-4.1.0-1.el7.centos.x86_64.rpm
    ---------------------------------------------------------------------------
    # 源码安装
    yum groupinstall 'Development Tools'
    yum install -y openssl-devel git 
    git clone https://github.com/wg/wrk.git wrk
    cd wrk
    make
    cp wrk /usr/local/bin/
    

    (2.)使用

    wrk -t8 -c100 -d30s --latency http://127.0.0.1:8080/book
    -c --conections:保持的连接数
    -d --duration:压测持续时间(s)
    -t --threads:使用的线程总数
    -s --script:加载lua脚本
    -H --header:在请求头部添加一些参数
    --latency 打印详细的延迟统计信息
    --timeout 请求的最大超时时间(s)
    

    4.ab工具

    (1.)安装

    yum install -y httpd-tools
    

    (2.)使用

    ab -c 10 -n 100 http://192.168.1.10:8081/index.html
    Usage: ab [options] [http[s]://]hostname[:port]/path
    Options are:
        -n requests     要执行请求总数,默认会执行一个请求
        -c concurrency  一次执行多个请求的数量,也就是并发数
        -t timelimit     用于基准测试的最大秒数,使用它在固定的总时间内对服务器进行基准测试。默认情况下,没有时间限制。
        -s timeout      超时之前等待的最大秒数。 默认值是30秒。
        -b windowsize  TCP发送/接收缓冲区的大小,以字节为单位。
        -B address     进行传出连接时要绑定的地址。
        -p postfile     包含数据到POST的文件。 还请记住设置-T。
        -u putfile     包含PUT数据的文件。 还请记住设置-T 。
        -T content-type  Content-type用于POST / PUT数据的内容类型内容类型标题,例如:'application/x-www-form-urlencoded' 默认是' 'text/plain'
        -v verbosity    verbosity 要打印多少个疑难解答信息,设置详细级别 - 4和以上打印标题信息,3和以上打印响应代码(404,200等),2和以上打印警告和信息。
        -w             以HTML表的格式输出结果。默认时,它是白色背景的两列宽度的一张表。
        -i              执行HEAD请求,而不是GET。
        -x attributes   用作<table>的属性的字符串。 属性被插入<table here>。
        -y attributes  用作<tr>的属性的字符串。
        -z attributes   用作<td>的属性的字符串。
        -C attribute    将cookie添加到请求。 参数通常采用名称=值对的形式。 这个字段是可重复的。
        -H attribute   例如 ‘Accept-Encoding: gzip’ 插入所有普通标题行之后
           
        -A attribute   添加基本的WWW认证,该属性是一个冒号分隔的用户名和密码,auth-username:password
    
        -P attribute     添加基本代理验证,属性是一个冒号分隔的用户名和密码,proxy-auth-username:password
    
        -X proxy:port   使用代理服务器和端口号。
        -V           打印版本号并退出。
        -k             使用HTTP KeepAlive功能。
        -d            不要显示百分点服务表。
        -S           不要显示信心估计和警告。
        -q            做超过150个请求时不要显示进度。
        -g filename    将收集的数据输出到gnuplot格式文件。
        -e filename    输出提供百分比的CSV文件。
        -r             不要退出套接字接收错误。
        -h            显示使用情况信息(此消息)。
        -Z ciphersuite  密码套件指定SSL / TLS密码套件(请参阅openssl密码)
        -f protocol    指定SSL / TLS协议 (SSL3, TLS1, TLS1.1, TLS1.2 or ALL)
    

    5.webbench工具

    (1.) 安装

    # 安装wenbench
    wget http://blog.s135.com/soft/linux/webbench/webbench-1.5.tar.gz
    tar xf webbench-1.5.tar.gz
    cd webbench-1.5
    make && make install
    

    (2.) 使用

    # 测试
    webbench -c 100 -t 30 http://IP:PORT/nginx.html # 测试静态文件访问
    webbench -c 20 -t 30 http://IP:PORT/test_mem.php # 测试动态文件访问
    

    参考链接

    https://liqiang.io/post/install-wrk-with-rpm-in-centos-ea209e01

    https://www.liwenzhou.com/posts/Go/benchmark_tool/

    https://www.cnblogs.com/yoyoketang/p/10254685.html

  • 相关阅读:
    #最小生成树,Trie#CF888G Xor-MST
    #Tarjan#洛谷 5676 [GZOI2017]小z玩游戏
    #区间dp#CF1114D Flood Fill
    #构造,二分#[AGC006B] [AGC006D] Median Pyramid
    #0/1分数规划#AT1807 食塩水
    #笛卡尔树#洛谷 3793 由乃救爷爷
    #同余最短路#洛谷 2371 [国家集训队]墨墨的等式
    awk命令使用
    k8s快速删除所有退出的pod
    ratticdb密码管理工具安装使用
  • 原文地址:https://www.cnblogs.com/tomtellyou/p/16092972.html
Copyright © 2020-2023  润新知