zoukankan      html  css  js  c++  java
  • linux下支持https的压力测试工具

    转自:http://2hei.net/linux_web_test_tools_for_https.html

    测试了linux下的几种压力测试工具,发现有些不支持https,先简单总结如下:

    一、apache的ab工具

    /home/webadm/bin/ab -c 50 -n 10000 https://2hei.net/mt/index.html
    SSL not compiled in; no https support
    看样子是说SSL没有编译进来,所以不支持https

    二、apache的flood工具

    http://httpd.apache.org/test/flood/

    wget http://www.apache.org/dist/httpd/flood/flood-0.4.tar.gz

    如果要支持https的话,需要添加如下的编译参数:–with-apr –with-apr-util –enable-ssl
    具体代码也可以从svn获取。
    不过我在编译的时候遇到一些问题,apr-util包在make的时候总是报错!

    三、web-bench工具

    http://freshmeat.net/projects/web-bench/

    ./webbench -c 20 -t 10 https://2hei.net/mt/index.html
    Webbench – Simple Web Benchmark 1.5
    Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.

    Only HTTP protocol is directly supported, set –proxy for others.
    明确提示了提示不支持https哦!

    四、http_load工具,曾经的最爱,http测试的结果还很令人满意。

    http://acme.com/software/http_load/
    ./http_load -rate 5 -seconds 10 urls
    ./http_load: unknown protocol – https://2hei.net/mt/index.html
    吼吼,看来之前常用的http_load也不支持https

    五、siege工具

    http://www.joedog.org/index/siege-home

    编译使之支持https
    ./configure –prefix=/home/2hei.net/siege –with-ssl=/usr/include/openssl

    基本用法:
    ./siege
    SIEGE 2.69
    Usage: siege [options]
    siege [options] URL
    siege -g URL
    Options:
    -V, –version VERSION, prints version number to screen.
    -h, –help HELP, prints this section.
    -C, –config CONFIGURATION, show the current configuration.
    -v, –verbose VERBOSE, prints notification to screen.
    -g, –get GET, pull down headers from the server and display HTTP
    transaction. Great for web application debugging.
    -c, –concurrent=NUM CONCURRENT users, default is 10
    -u, –url=”URL” Deprecated. Set URL as the last argument.
    -i, –internet INTERNET user simulation, hits the URLs randomly.
    -b, –benchmark BENCHMARK, signifies no delay for time testing.
    -t, –time=NUMm TIME based testing where “m” is the modifier S, M, or H
    no space between NUM and “m”, ex: –time=1H, one hour test.
    -r, –reps=NUM REPS, number of times to run the test, default is 25
    -f, –file=FILE FILE, change the configuration file to file.
    -R, –rc=FILE RC, change the siegerc file to file. Overrides
    the SIEGERC environmental variable.
    -l, –log LOG, logs the transaction to PREFIX/var/siege.log
    -m, –mark=”text” MARK, mark the log file with a string separator.
    -d, –delay=NUM Time DELAY, random delay between 1 and num designed
    to simulate human activity. Default value is 3
    -H, –header=”text” Add a header to request (can be many)
    -A, –user-agent=”text” Sets User-Agent in request

    siege -c 20 -r 2 -f url
    -c 20 并发20个用户
    -r 2 重复循环2次
    -f url 任务列表:URL列表

    结论相当凑合,纵欲找到可以支持https压力测试的工具了。

    六、httperf工具,来自hp的工具,不过已经n年没有更新了。

    wget ftp://ftp.hpl.hp.com/pub/httperf/httperf-0.9.0.tar.gz

    $ mkdir build
    $ cd build
    $ SRCDIR/configure
    $ make
    $ make install

    工具使用方法:
    /usr/local/bin/httperf –help
    Usage: httperf [-hdvV] [--add-header S] [--burst-length N] [--client N/N]
    [--close-with-reset] [--debug N] [--failure-status N]
    [--help] [--hog] [--http-version S] [--max-connections N]
    [--max-piped-calls N] [--method S] [--no-host-hdr]
    [--num-calls N] [--num-conns N] [–period [d|u|e]T1[,T2]]
    [--port N] [–print-reply [header|body]] [–print-request [header|body]]
    [--rate X] [--recv-buffer N] [--retry-on-failure] [--send-buffer N]
    [--server S] [--server-name S] [--session-cookies]
    [--ssl] [--ssl-ciphers L] [--ssl-no-reuse]
    [--think-timeout X] [--timeout X] [--uri S] [--verbose] [--version]
    [--wlog y|n,file] [--wsess N,N,X] [--wsesslog N,X,file]
    [--wset N,X]
    如:
    /usr/local/bin/httperf –server www.2hei.net
    –port 443 –uri /mt/index.html
    –rate 15 –num-conn 1000
    –num-call 1 –timeout 5

    发现会有如下错误:
    httperf: warning: open file limit > FD_SETSIZE; limiting max. # of open files to FD_SETSIZE
    以下是解决办法:
    # Edit /etc/security/limits.conf and add the line * hard nofile 65535 (or instead of * you can put the username of the user for whom you want to change the limit)
    # Edit /usr/include/bits/typesizes.h and change #define __FD_SET_SIZE 1024 to #define __FD_SET_SIZE 65535 (in /usr/include/sys/select.h FD_SETSIZE is defined as __FD_SETSIZE)
    重新编译即可。

    实例测试如下:
    /usr/local/bin/httperf –client=0/1 –ssl –server=www.2hei.net –port=443 –uri=/mt/index.html –rate=1 –num-conns=1000 –rate=50 –num-calls=1 –hog
    httperf –hog –client=0/1 –server=www.2hei.net –port=443 –uri=/mt/index.html –rate=50 –send-buffer=4096 –rec
    v-buffer=16384 –ssl –num-conns=1000 –num-calls=1
    Maximum connect burst length: 1

    Total: connections 1000 requests 1000 replies 1000 test-duration 33.758 s

    Connection rate: 29.6 conn/s (33.8 ms/conn, <=394 concurrent connections)
    Connection time [ms]: min 73.1 avg 6513.5 max 22013.1 median 5371.5 stddev 4176.3
    Connection time [ms]: connect 5670.7
    Connection length [replies/conn]: 1.000

    Request rate: 29.6 req/s (33.8 ms/req)
    Request size [B]: 80.0

    Reply rate [replies/s]: min 26.6 avg 31.3 max 33.6 stddev 2.4 (6 samples)
    Reply time [ms]: response 842.7 transfer 0.0
    Reply size [B]: header 331.0 content 163.0 footer 2.0 (total 496.0)
    Reply status: 1xx=0 2xx=1000 3xx=0 4xx=0 5xx=0

    CPU time [s]: user 9.91 system 23.11 (user 29.4% system 68.5% total 97.8%)
    Net I/O: 16.6 KB/s (0.1*10^6 bps)

    Errors: total 0 client-timo 0 socket-timo 0 connrefused 0 connreset 0
    Errors: fd-unavail 0 addrunavail 0 ftab-full 0 other 0

  • 相关阅读:
    leetcode38.外观数列(循环匹配)
    leetcode35.搜索插入位置(遍历并进行大小判断)
    leetcode28.实现strStr()(暴力拆解,双指针,KMP算法)
    JavaScript对象
    数组迭代
    数组的用法:
    数组
    while与do while 区别 for循环的简介及break和continue的区别
    for循环语句
    if.......else语句子
  • 原文地址:https://www.cnblogs.com/eagleking0318/p/6520793.html
Copyright © 2011-2022 走看看