我试图在多个数据库中运行一个性能测试,从csv文件中读取信息,但是过了一段时间jmeter没有通过测试用例,因为它耗尽了内存。我试图以这种方式增加“java-xx:maxpermsize=1024m-xms3072m-xmx3072m-jarapachejmeter.jar”,但得到了相同的结果。另外,jmeter正在创建一个到5个不同数据库的mysql连接。
2q5ifsrm1#
我假设您有一个64位操作系统和jvm以及大量可用的ram。你猜不到这些事。最好使用探查器获取一些数据。使用dynatrace、jprofiler之类的工具,如果您有oraclejvm,则使用jvm附带的visualvm工具。除非你有一些数据,否则你无法找出问题所在。也许你需要以不同的方式编写测试,这样你就不会一次在内存中有那么多数据。
polhcujo2#
首先,您是否在jmeter bat中修改了这些命令行?因为根据你的转储,我们应该可以看到你实际使用了多少内存。。e、 g.java.lang.outofmemoryerror:java堆空间转储堆到java?pid999999.hprof。。。创建的堆转储文件[591747609 bytes in 1321.244 secs]在本例中,这意味着我使用的jmeter配置了591747609 bytes的xmx,也就是512mb的ram。。通过这一点,我们可以了解是否应用了您的设置。。如果这是好的,无论如何,发布一些探查器信息,我们会看到。。但请考虑以下几点:1)如果您想了解java应用程序的性能如何,GUI模式下的jmeter是一个真正的瓶颈。。。考虑切换到远程测试。2) 检查jmeter配置的最佳实践,jmeter中有一些次优设置占用了太多内存,您可能希望将它们关闭。。。给我们一个最新消息,我们看看能给什么建议。
4si2a6ki3#
确保你在非gui模式下运行jmeter禁用所有侦听器,尤其是查看结果树和查看表中的结果使用csv作为结果输出格式避免查询产生大的结果集仅在需要时使用后处理器和Assert在64位操作系统上使用最新版本的jmeter,并使用最新版本的64位jdk如果仍然遇到oom错误,则需要切换到具有更多ram的机器,或者考虑分布式测试。
3条答案
按热度按时间2q5ifsrm1#
我假设您有一个64位操作系统和jvm以及大量可用的ram。
你猜不到这些事。最好使用探查器获取一些数据。使用dynatrace、jprofiler之类的工具,如果您有oraclejvm,则使用jvm附带的visualvm工具。
除非你有一些数据,否则你无法找出问题所在。也许你需要以不同的方式编写测试,这样你就不会一次在内存中有那么多数据。
polhcujo2#
首先,您是否在jmeter bat中修改了这些命令行?因为根据你的转储,我们应该可以看到你实际使用了多少内存。。e、 g.java.lang.outofmemoryerror:java堆空间转储堆到java?pid999999.hprof。。。创建的堆转储文件[591747609 bytes in 1321.244 secs]在本例中,这意味着我使用的jmeter配置了591747609 bytes的xmx,也就是512mb的ram。。通过这一点,我们可以了解是否应用了您的设置。。
如果这是好的,无论如何,发布一些探查器信息,我们会看到。。但请考虑以下几点:1)如果您想了解java应用程序的性能如何,GUI模式下的jmeter是一个真正的瓶颈。。。考虑切换到远程测试。2) 检查jmeter配置的最佳实践,jmeter中有一些次优设置占用了太多内存,您可能希望将它们关闭。。。
给我们一个最新消息,我们看看能给什么建议。
4si2a6ki3#
确保你
在非gui模式下运行jmeter
禁用所有侦听器,尤其是查看结果树和查看表中的结果
使用csv作为结果输出格式
避免查询产生大的结果集
仅在需要时使用后处理器和Assert
在64位操作系统上使用最新版本的jmeter,并使用最新版本的64位jdk
如果仍然遇到oom错误,则需要切换到具有更多ram的机器,或者考虑分布式测试。