繁体   English   中英

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

[英]Load/Stress Test Java application [closed]

所有,

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

我需要对该应用程序进行压力测试,以测试负载,线程安全性和响应时间该Web服务是使用HTTPURLConnection API和JAXB api消耗的。

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

我已经看到通过指定事务数和线程数来进行应用程序负载测试。 我也想对我的应用程序做同样的事情

任何建议都值得赞赏

使用Apache JMeter

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

在将Apache JMeter™Grinder比较之后,由于GUI的缘故,我选择了JMeter来创建测试计划。 学习曲线很平坦-容易创建简单的方案。

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

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

跟随链接“ 如何用jmeter获得我的网站负载测试”,以获取有关jMeter中压力测试和更好的插件的链接以可视化结果。

对于大型数据集(> 100.000条目)的默认图形插件,我遇到了性能问题。 有关日志分析的建议和食谱,请参见如何为此类数据量制作图表的想法

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

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

  1. 您不在同一框上运行应用程序和JMeter。

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

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

例如

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

显然,这存在性能问题,因此,如果可能的话,最好使用其他库。 如果部署的代码不是线程安全的,则很可能会遇到非常难以重现的错误。

如果您确实想编写并发集成测试,请事先阅读第12章“在Java Concurrency in Practice中测试并发程序”,因为编写好的测试比您想象的要难得多。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM