我一直在寻找可以帮助我进行负载测试和基准测试的工具.我发现夫妇喜欢:https://github.com/wg/wrk,http://www.joedog.org/siege-home/,https://github.com/rakyll/boom.我想知道是否有人对这些工具有任何经验,并且对这些工具有任何反馈优点和缺点.我的负载压力将包括使用DELETE,PUT,GET,POST ...标头的不同测试用例
谢谢
我想使用围攻来定位我的应用程序上的多个URL,每个URL都有不同的标题.我可以为一个请求设置标头
siege -u http://localhost/xyz -d1 -r1000 -c25 --header="Token: f2840fc1"
Run Code Online (Sandbox Code Playgroud)
(这似乎没有记录)
我可以在URL文件中指定URL列表,并为每个URL指定自定义标头.但我无法在文档中看到一种方式.
我正在尝试使用siege实用程序测试我的服务器上的高负载阻力:
siege http://my.server.ru/ -d1 -r10 -c100
Siege会输出很多这样的消息:
HTTP/1.1 200 0.46 secs: 10298 bytes ==> /
但有时会出现如下错误消息:
Error: socket: unable to connect sock.c:220: Connection timed out
或这个:
warning: socket: -598608128 select timed out: Connection timed out
测试后有围攻报告:
Transactions: 949 hits Availability: 94.90 % ... Successful transactions: 949 Failed transactions: 51 Longest transaction: 9.87 Shortest transaction: 0.37
在我的服务器上的nginx日志中,只有950条消息,代码为200,响应即可.
"GET / HTTP/1.1" 200 10311 "-" "JoeDog/1.00 [en] (X11; I; Siege 2.68)"
任何人都可以告诉我这意味着什么
Error: socket: unable to connect sock.c:220: Connection timed out warning: socket: …
开放式和近端负载测试有什么区别?
基于线程的负载测试工具属于哪一类?
以下是每个类别中负载测试工具的一些示例?
我在使用https进行围攻时遇到了麻烦.在预装了OpenSSL 1.0.2g和libssl-dev 1.0.2g-1ubuntu4.6的Ubuntu 16.04 LTS上运行Siege 4.0.2.
错误
当我运行它时,我得到了很多这些错误:
[error] HTTPS requires libssl: Unable to reach www.mysite.com with this protocol: Transport endpoint is already connected
还有其中几个
[error] descriptor table full sock.c:133: Too many open files
然后最后
libgcc_s.so.1 must be installed for pthread_cancel to work
[1] 18421 abort (core dumped) sudo siege -t 5M -d1 -c200 -f urls-f1.txt
我的研究
我在网上找到了几个答案,可以让围攻与https一起工作.例如,stackoverflow上的这个线程说"使用--with-ssl选项配置.另外,必须安装openssl开发头".
也许最好的来源是siege包本身的INSTALL文件,其中说:
要启用https,您必须在系统上安装ssl.从http://www.openssl.org获取最新版本.安装了ssl后,你必须配置围攻才能使用它:
$ ./configure --prefix=/some/dir --with-ssl=/ssl/install/dir
Run Code Online (Sandbox Code Playgroud)
openssl默认安装是/ usr/local/ssl.如果您在该目录中安装了openssl,那么您可以像这样配置siege:
$ ./configure --prefix=/some/dir --with-ssl=/usr/local/ssl …Run Code Online (Sandbox Code Playgroud) 我试图在Mac OS 10.12上使用libssl 安装Siege,但是当我对httpsURL 使用实用程序时,出现以下错误。
[错误] HTTPS需要libssl:无法访问https://example.com/ 使用此协议:套接字已连接
我正在从此Wiki使用以下命令进行安装:
./configure --with-ssl
make
make install
Run Code Online (Sandbox Code Playgroud) 我被包围时遇到此错误,我不太确定其原因是什么:
[alert] HTTP: unable to determine chunk size-这似乎是随机发生的,但是当它确实发生时,它会连续发生多次。
它会完全影响我的基准测试结果吗?
我正在尝试通过 ssh 连接到某个服务器并对另一台服务器运行 siege 命令来对我的端点执行负载测试。不幸的是,当我在请求中提供所有 cookie 时:
-H $'Cookie:
Run Code Online (Sandbox Code Playgroud)
它失败并显示以下消息:
[fatal] header is too large
Run Code Online (Sandbox Code Playgroud)
有没有办法 siege 或其他类似的工具可以处理大标题?因为如果不发送 cookie,我的请求就没有任何意义,并且无法模拟真实场景。
如果有任何其他工具,它应该是可以通过 ssh 从命令行轻松运行而无需 GUI 的工具。
我只是使用以下方法跟踪了我的 nodejs 服务器的性能: siege -b -t10s -q http://mynodejsserver
我发现当没有“url.parse(req.url)”
交易速率约为 4300 trans/sec
但是当我使用 url.parse 时,交易率大约是 3600-3700 trans/sec
其他代码相同。
我尝试了很多次,结果很稳定。
url.parse 真的有性能问题吗?
我对 Siege 的幕后行为感到困惑。我时不时地使用 Siege 为我的网络服务创造一些流量。今天我注意到《围攻》列出的回复比我预期的要多。
例如我使用 Siege 作为
siege -c 1 -t 5s http://www.github.com/index.html
我希望只看到一个带有“index.html”HTML 资源的响应。但相反我得到
** SIEGE 4.0.2
** Preparing 1 concurrent users for battle.
The server is now under siege...
HTTP/1.1 301 0.22 secs: 0 bytes ==> GET /index.html
HTTP/1.1 301 0.74 secs: 0 bytes ==> GET /index.html
HTTP/1.1 200 0.72 secs: 84938 bytes ==> GET /index.html
HTTP/1.1 200 0.59 secs: 25628 bytes ==> GET /
HTTP/1.1 200 0.14 secs: 97194 bytes ==> GET /images/modules/site/org_example_nasa.png?sn
HTTP/1.1 200 0.06 …Run Code Online (Sandbox Code Playgroud) siege ×10
benchmarking ×4
load-testing ×4
openssl ×2
performance ×2
http-headers ×1
https ×1
jmeter ×1
linux ×1
macos ×1
nginx ×1
node.js ×1
testing ×1
tsung ×1
ubuntu ×1
webserver ×1
wrk ×1