首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >性能/压力测试Java应用程序

性能/压力测试Java应用程序
EN

Stack Overflow用户
提问于 2013-09-23 01:54:01
回答 4查看 15.2K关注 0票数 12

很难单独使用单元测试来查找Java应用程序中的所有瓶颈、死锁和内存泄漏。

我想为我的应用程序添加一些压力测试。我想测试应用程序的极限,并确定它在高负载下的反应方式。

我想评估以下几点:

  • 高负荷下的有效性
  • 高负荷性能
  • 高负载下的内存/ CPU /磁盘使用率
  • 它是在高负荷下坠毁还是反应优雅?

在正常载荷下测量和对比这些特性也是很有趣的。

是他们众所周知的解决压力测试的标准技术。我正在寻求在建立这样一个环境方面的帮助/指导。理想情况下,我希望定期运行这些测试,这样我们就可以确定最近的交付是否会影响性能。

EN

回答 4

Stack Overflow用户

发布于 2013-10-17 20:26:43

我是JMeter的超级粉丝。您可以像用户访问服务器一样,直接针对服务器设置调用。您可以控制用户数量(并发线程)和访问。它可以遵循一个工作流,抓取相关的信息页面到页面。它需要1到2天的时间,才能很好地学习它,使之更有效率。(您可以在下载后一小时内完成基本操作!)

至于这一切是如何影响服务器的,这是一个更棘手的问题。我使用过CA和IBM的专业工具。(我正在画一个空白的特定工具名称-可能是由于PTSD!)我已经使用了开箱即用的JVM剖析器。我使用了本地linux和windows工具。如果您不太关心分析应用程序的哪些部分会导致问题,那么您只需使用操作系统的本机工具来监视CPU/内存/IO。

票数 6
EN

Stack Overflow用户

发布于 2013-09-23 12:15:18

我们的标准技术之一是运行阶梯荷载试验来度量可伸缩性。

票数 1
EN

Stack Overflow用户

发布于 2013-10-17 19:31:31

应用程序的性能主要有两种方法:

性能测试和系统测试

它们有何不同?这很简单,它基于它们的范围,性能测试的范围是有限的,而且非常不现实。示例:在某些App上测试IncomingMessage处理程序,为此您将设置一个测试,该测试将在X、Y、Z基础上向该处理程序发送meesages。这种方法将帮助您确定问题,并测量应用程序上单个和有限区域的性能。

因此,这应该会带您进入这个问题,那么我是否要对我的应用程序中的每个组件进行基准测试和性能测试呢?是的,如果您认为组件的行为是至关重要的,并且更新版本的更改可能会导致性能下降。但是,如果您想了解您的应用程序作为一个整体,一堆组件相互交互,看看性能如何,那么您需要一个系统测试。

系统测试将始终,尝试复制尽可能接近任何客户的生产环境。在这里,您可以观察您的应用程序的性能是什么样的真实世界的感觉,并采取相应的行动来纠正它。

因此,最后,在应用程序上设置一个系统测试,并测量您想要测量的内容。然后把整个系统作为一个整体,看看它是如何反应的,你会对结果感到惊讶。

最后,性能测试,每个关键组件,您已经确定或希望保持跟踪在您的应用程序。

作为一般的指导方针,在执行性能时,您应该始终: 1.-获得处于空闲状态的系统的基线。2.-获得系统在正常预期负荷下的基线。3.-获得压力条件下的系统基线。

请记住,正常载荷的结果应该外推到应力条件,一个好的系统将永远是一个线性的规模。

希望这能有所帮助。

测试、环境设置甚至数据收集都应该尽可能完全自动化,这将帮助您在一个基础上运行它,并花费时间诊断性能问题,而不是设置测试。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18950746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档