我开发了一个应用程序,它将创建大量PDF并提供这些文件。 (它正常的Servlet-Buffering服务)。
如何通过多个请求确保我的应用程序有效?是否有任何工具可用于测试负载/可伸缩性/效率以及我的代码使用当前服务器配置处理多少并行请求?
答案 0 :(得分:4)
您可以使用负载测试器,例如Tsung
答案 1 :(得分:1)
您应该考虑使用grinder或jmeter等负载测试工具。 grinder支持脚本,而jmeter允许您将junit转换为负载测试客户端。我个人喜欢jmeter因为junit支持以及它的精细gui控制和报告。 jmeter支持http和soap开箱即用。此外,您可以编写自己的插件以满足您的自定义需求。
答案 2 :(得分:1)
我还建议JMeter。您还可以记录浏览器的页面请求以创建JMeter测试(HTTP Proxy Server)。
答案 3 :(得分:1)
您还应该有适当的监视工具来查看应用程序在负载下的行为。
一个好的开始是jvisualvm,它位于最新的Sun JDK中。
答案 4 :(得分:1)
您可以做的最简单的事情是Apache基准测试,如果您正在运行基于Unix的系统或者附带适用于Windows的Apache Webserver 2.x,则可能已经安装了该基准测试。
使用示例;
$ ab -n 1000 -c 20 http://www.google.com/
给我这个输出;
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking www.google.com (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests
Server Software: gws
Server Hostname: www.google.com
Server Port: 80
Document Path: /
Document Length: 218 bytes
Concurrency Level: 20
Time taken for tests: 1.826 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Non-2xx responses: 1000
Total transferred: 807000 bytes
HTML transferred: 218000 bytes
Requests per second: 547.55 [#/sec] (mean)
Time per request: 36.527 [ms] (mean)
Time per request: 1.826 [ms] (mean, across all concurrent requests)
Transfer rate: 431.51 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 9 12 14.7 10 337
Processing: 11 24 26.8 17 306
Waiting: 11 22 21.1 16 297
Total: 21 36 30.5 28 350
Percentage of the requests served within a certain time (ms)
50% 28
66% 36
75% 39
80% 41
90% 45
95% 54
98% 93
99% 253
100% 350 (longest request)
答案 5 :(得分:0)
Apachebench
是一个单线程工具。这意味着它将无法使SMP服务器饱和(多线程或多进程)。
您应该考虑使用AB语法的weighttp
(唯一的区别是-t 4表示使用4个工作线程而不是4秒测试)。