0

All,

We have a Java application built on HTTP Servlets , EJB and POJO's. Clients access the application using HTTPServlet and the application consumes webservices.

I need to stress test this application to test the load, thread safety and response times The webservice is consumed using HTTPURLConnection API and JAXB api.

As JAXB marshalling/unmarshalling has thread safety issues need to load test and thread safety

I have seen applications load testing by specifying the number of transactions and no of threads . I want to do the same to my application as well

Any piece of advice is truly appreciated

4

3 回答 3

1

在将Apache JMeter™</a> 与Grinder进行比较后,我选择了 JMeter,因为它使用 GUI 来创建测试计划。学习曲线是平坦的——很容易创建简单的场景。

如果您可以在 jython 中编写测试计划,那么这些工具似乎非常接近。两个都

  • 具有用于运行和协调分布式测试的 GUI(必须具有压力测试)
  • 可以为进一步分析创建文本/xml 报告
  • 有内置的报告插件

按照链接how-to-get-my-website-load-test-with-jmeter获取有关 jMeter 中压力测试的链接和更好的插件以可视化结果。

我在使用大型数据集(>100.000 个条目)的默认图形插件时遇到了性能问题。遵循Suggestions and Recipes for Log Analysis了解如何为此类数据量制作图表

于 2013-10-10T19:30:47.510 回答
1

使用Apache JMeter

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

于 2013-10-10T19:03:52.397 回答
1

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

1 确保您的测试复制您的实际用例。

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

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

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

例如

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

显然这存在性能问题,因此如果可能的话,使用不同的库可能会更好。如果您部署的代码不是线程安全的,您更有可能遇到难以重现的错误。

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

于 2013-10-10T20:00:34.137 回答