2013-10-10 101 views
0

全部,负载/压力测试Java应用程序

我们有一个基于HTTP Servlets,EJB和POJO构建的Java应用程序。客户端使用HTTPServlet访问应用程序,并且该应用程序使用Web服务。

我需要对此应用程序进行压力测试,以测试负载,线程安全性和响应时间 使用HTTPURLConnection API和JAXB API消耗webservice。

由于JAXB编组/解组具有线程安全问题需要加载测试和线程安全

我已经通过指定交易的数量看出应用程序负载测试和无绪的。我想这样做,以我的应用程序以及

任何一条建议是真正的赞赏

+0

你似乎没有问过一个实际的问题?一般建议的请求通常不适合堆栈交换格式。我建议从这里开始:http://grinder.sourceforge.net/ – Affe

回答

1

是的,您可以使用JMeter来测试响应时间,尽管我怀疑您会使用JMeter查找所有并发问题。 JMeter可以很好地测试应用程序的负载,但请记住:

1确保您的测试正在复制您的实际使用案例。

  1. 您没有在同一个盒子上运行应用程序和JMeter。

  2. 您正在使用现实的新数据和现有数据。

为并发编写测试可能非常棘手。更好的方法是仔细检查使用已知不安全类的代码。例如,JAXB的解决方案可以是使用局部变量在每个请求处理程序上创建一个新的Unmarashaller。

例如

public void handler(HttpServletRequest req) { 
    Unmarshaller u = context.createUnmarshaller(); 
    u.unmarshal(...); 
} 

显然,这有性能问题,所以它可能是更好的,如果可能使用不同的库。如果您部署的代码不是线程安全的,则更容易遇到非常难以重现的错误。

如果您希望编写并发集成测试,请事先阅读第12章在Java实践中测试并发程序,因为编写好的测试比您可能认为的要困难得多。

1

使用Apache JMeter

阿帕奇JMeter的™桌面应用程序是开源软件,100%纯Java应用程序旨在加载测试功能行为并衡量性能。它最初设计用于测试Web应用程序,但后来扩展到其他测试功能。

1

经过比较Apache JMeter™Grinder我选择了JMeter,因为用于创建测试计划的GUI。学习曲线平坦 - 创建简单场景很容易。

如果您在jython中使用wrinting测试计划可以,那些工具似乎非常接近。无论

  • 对运行和协调分布式测试GUI(必须有一个压力测试)
  • 可以为进一步analisys
  • 有文字/ XML报告集结在报告插件

关注链接how-to-get-my-website-load-test-with-jmeter关于jMeter中压力测试的链接以及更好的插件来显示结果。

我对大数据集(> 100.000条目)的默认图形插件有性能问题。请按照Suggestions and Recipes for Log Analysis了解如何为这些数据卷绘制图表