0

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

使用哪些工具以及如何实现这一目标?

我听说过 APM 软件,包括 Stackify Prefix、New Relic APM、JMeter、JVisualVM、JVM Monitor、JBenchX——但我不确定是否需要为我的特定目的继续使用其中的任何一个。

具有非常有限的 CPU 资源的同样问题。在部署到内存/CPU 有限的 Jelastic 云之前,我想在我的台式电脑上测试我的应用程序。

4

2 回答 2

1

您可以通过修改定义 Tomcat 服务器将使用的最大堆空间的-Xmx命令行参数来人为地限制分配给 tomcat 的 JVM 堆。

如果低堆大小是您想要测试的唯一内容 - 这已经足够了。

您还可以修改CPU 关联性以将 Tomcat 服务器绑定到单个 CPU 核心(或有限数量的核心)


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

关于测试,我会推荐以下性能测试技术

  • 负载测试- 将您的系统置于预期负载下,看看它是否能够处理它
  • 浸泡测试- 与负载测试基本相同,但持续时间较长(即过夜或周末) - 它可以让您识别内存泄漏
  • 压力测试- 从负载测试开始并逐渐增加负载,直到响应时间开始超过可接受的阈值或开始发生错误(无论先发生什么) - 它会让您了解应用程序/配置的限制以及将要破坏的内容和方式

使用YourKitJProfiler之类的分析器工具来微调您的代码也是有益的。

于 2018-11-29T18:36:38.527 回答
0

最好的方法是使用虚拟机。您可以选择自己喜欢的技术,但一个简单的选择是使用 Oracle VirtualBox,它可免费用于许多平台。只需在 VM 中安装一个最小的操作系统,然后添加 Java、您的应用程序等,然后针对它运行您的负载测试。

网络照常工作,因此您可以使用现有的负载测试框架并将其指向 VM 的 IP 地址。

还有其他更好的方法可以做到这一点,例如使用 Docker 或其他方法,但这将完成冒烟测试的工作。

我不建议尝试使用具有大量 RAM 的服务器,然后尝试在不使用虚拟机之类的东西的情况下“合成”低 RAM 情况(顺便说一句,Docker 在内部使用虚拟机)。

于 2018-11-30T17:27:14.780 回答