如何测试我的 java 应用程序是否可以成功处理 Tomcat 服务器上的低 memory/CPU 资源?
How to test if my java application can successfully handle low memory/CPU resources on Tomcat server?
我想测试我的 java 应用程序在仅具有 512M RAM 的 Tomcat 服务器上的表现。换句话说,我需要进行内存负载测试,以检查我的应用程序是否可以 运行 在这样受限的环境中。
使用哪些工具以及如何实现?
我听说过 APM 软件,包括 Stackify Prefix、New Relic APM、JMeter、JVisualVM、JVM Monitor、JBenchX - 但我不确定我是否需要为我的特定目的继续使用它们中的任何一个。
同样的问题是 CPU 资源非常有限。我想在部署到具有有限 memory/CPU.
的 Jelastic 云之前在我的桌面 PC 上测试我的应用程序
您可以通过修改 -Xmx
command-line argument 来人为限制分配给 tomcat 的 JVM 堆,它定义了 Tomcat 服务器将使用的最大堆 space。
如果您只想测试小堆大小 - 这就足够了。
您还可以修改 CPU affinity 以将您的 Tomcat 服务器绑定到单个 CPU 核心(或有限数量的核心)
如果您想更进一步,您可以使用 VirtualBox 创建虚拟机并复制部署后您将拥有的所有预期 hardware/software。
关于测试,我会推荐以下 performance testing techniques:
- Load Testing - 将您的系统置于预期负载下以查看它是否能够处理它
- Soak Testing - basically the same as Load Testing but for prolonged duration (i.e. overnight or weekend) - it will allow you to identify memory leaks
- Stress Testing - 从负载测试开始并逐渐增加负载,直到响应时间开始超过可接受的阈值或错误开始发生(无论先发生什么) - 它会让你知道你的限制 application/configuration 和愿景会破坏什么以及如何破坏
最好的方法是使用虚拟机。您可以选择自己喜欢的技术,但一个简单的选择是使用 Oracle VirtualBox,它可免费用于许多平台。只需在 VM 中安装最小的 OS,然后添加 Java、您的应用程序等,然后 运行 您对其进行负载测试。
网络照常工作,因此您可以使用现有的负载测试框架并将其指向 VM 的 IP 地址。
还有其他更好的方法,例如使用 Docker 或其他方式,但这将完成冒烟测试的工作。
我不建议尝试使用具有大量 RAM 的服务器,然后尝试 "synthesize" 低 RAM 情况而不使用虚拟机(顺便说一句 Docker在内部使用虚拟机)。
我想测试我的 java 应用程序在仅具有 512M RAM 的 Tomcat 服务器上的表现。换句话说,我需要进行内存负载测试,以检查我的应用程序是否可以 运行 在这样受限的环境中。
使用哪些工具以及如何实现?
我听说过 APM 软件,包括 Stackify Prefix、New Relic APM、JMeter、JVisualVM、JVM Monitor、JBenchX - 但我不确定我是否需要为我的特定目的继续使用它们中的任何一个。
同样的问题是 CPU 资源非常有限。我想在部署到具有有限 memory/CPU.
的 Jelastic 云之前在我的桌面 PC 上测试我的应用程序您可以通过修改 -Xmx
command-line argument 来人为限制分配给 tomcat 的 JVM 堆,它定义了 Tomcat 服务器将使用的最大堆 space。
如果您只想测试小堆大小 - 这就足够了。
您还可以修改 CPU affinity 以将您的 Tomcat 服务器绑定到单个 CPU 核心(或有限数量的核心)
如果您想更进一步,您可以使用 VirtualBox 创建虚拟机并复制部署后您将拥有的所有预期 hardware/software。
关于测试,我会推荐以下 performance testing techniques:
- Load Testing - 将您的系统置于预期负载下以查看它是否能够处理它
- Soak Testing - basically the same as Load Testing but for prolonged duration (i.e. overnight or weekend) - it will allow you to identify memory leaks
- Stress Testing - 从负载测试开始并逐渐增加负载,直到响应时间开始超过可接受的阈值或错误开始发生(无论先发生什么) - 它会让你知道你的限制 application/configuration 和愿景会破坏什么以及如何破坏
最好的方法是使用虚拟机。您可以选择自己喜欢的技术,但一个简单的选择是使用 Oracle VirtualBox,它可免费用于许多平台。只需在 VM 中安装最小的 OS,然后添加 Java、您的应用程序等,然后 运行 您对其进行负载测试。
网络照常工作,因此您可以使用现有的负载测试框架并将其指向 VM 的 IP 地址。
还有其他更好的方法,例如使用 Docker 或其他方式,但这将完成冒烟测试的工作。
我不建议尝试使用具有大量 RAM 的服务器,然后尝试 "synthesize" 低 RAM 情况而不使用虚拟机(顺便说一句 Docker在内部使用虚拟机)。