我在文件上传测试执行期间遇到内存不足错误。 我正在从ec2 m4.xlarge实例(16 GB RAM)运行测试,并且已经分配了80%的内存作为Jmeter堆。 在测试期间,CPU util达到100%,消耗掉整个内存(大约12 gb),并在Bin文件夹中创建巨大的java_pid ***。hrpof(堆转储)文件。
文件上传大小:200 kb,400 mb,1.5 gb文件的混合
总螺纹数:50
Jmeter版本:3.3
我尝试过不同论坛的建议,但没有工作:
有没有人遇到过这种情况,你是如何解决这个问题的?
另外,如何禁用生成的巨大(3-5GB)java_pid ***。hrpof转储文件?
答案 0 :(得分:0)
50 threads * 1.5 GB == 75 GB
虽然你有3到5 GB分配给JMeter,所以这绝对是不够的。
您需要使用类似m4.10xlarge with 160 GB RAM or m5d.12xlarge with 192 GB RAM之类的东西,以便能够使用那么多线程上传那些大文件。
另一个选择是考虑切换到Distributed Testing,但您需要启动更多m4.xlarge
个实例
您也可以尝试切换到具有HTTP Raw Request功能的streaming file directly to the server without pre-loading it into memory采样器,因此理论上您应该能够模拟文件上传,即使在这个有限的实例上,但它可能无法完全反映现实生活场景。您可以使用JMeter Plugins Manager
安装HTTP Raw Request采样器要禁用堆转储创建,请从JMeter启动脚本中删除DUMP="-XX:+HeapDumpOnOutOfMemoryError"
行。