如何测试我的Java应用程序是否可以成功处理Tomcat服务器上的低内存/ CPU资源?

时间:2018-11-29 18:03:48

标签: java tomcat load-testing apm

我想测试我的Java应用程序在仅带512M RAM的Tomcat服务器上的表现。换句话说,我需要进行内存负载测试,以检查我的应用程序是否可以在这种受限环境中运行。

使用哪些工具以及如何实现?

我听说过APM软件,包括Stackify Prefix,New Relic APM,JMeter,JVisualVM,JVM Monitor,JBenchX-但我不确定出于我的特定目的需要继续使用其中的任何软件。

具有非常有限的CPU资源的相同问题。我想先在台式机上测试我的应用程序,然后再部署到内存/ CPU有限的Jelastic云中。

2 个答案:

答案 0 :(得分:1)

您可以通过修改-Xmx command-line argument来人为地限制分配给tomcat的JVM堆,该定义了Tomcat服务器将使用的最大堆空间。

如果唯一要测试的是低堆大小,那就足够了。

您还可以修改CPU affinity,以将Tomcat服务器绑定到单个CPU内核(或有限数量的内核)


如果您想更进一步,可以使用VirtualBox创建虚拟机,并复制部署后将拥有的所有预期的硬件/软件。

关于测试,我建议以下performance testing techniques

  • Load Testing-将系统置于预期的负载下,以查看其是否能够处理
  • Soak Testing-与负载测试基本相同,但持续时间较长(即通宵或周末)-它可让您识别memory leaks
  • Stress Testing-从负载测试开始,逐渐增加负载,直到响应时间开始超过可接受的阈值或开始出现错误(无论哪种情况出现)-它会让您知道应用程序/配置和视觉的局限性什么以及如何打破

使用YourKitJProfiler之类的探查器工具来微调代码也将是有益的。

答案 1 :(得分:0)

执行此操作的最佳方法是使用虚拟机。您可以选择自己选择的技术,但是一个简单的选择就是使用Oracle VirtualBox,它可以在许多平台上免费使用。只需在VM内安装一个最小的操作系统,然后添加Java,您的应用程序等,然后对其进行负载测试即可。

网络正常运行,因此您可以使用现有的负载测试框架,只需将其指向虚拟机的IP地址即可。

还有其他更理想的方法,例如使用Docker或其他工具,但这可以完成烟雾测试的工作。

我不建议尝试使用具有大量RAM的服务器,然后尝试在不使用虚拟机之类的情况下“合成”低RAM情况(并且BTW Docker在内部使用VM)。