我有一个在Windows 10上运行的32GB i7核心处理器,我正尝试通过jmeter生成10kVU并发负载。由于某种原因,我无法并发超过1k,并且开始出现BindException错误或Socket连接错误。有人可以帮助我完成这些设置吗?另外,如果有人愿意获得自由职业,我也很乐意考虑这一点。当我即将投入生产并且无法对该用例进行负载测试时,任何帮助都将非常有用。如果你们有我可以有效使用的任何其他工具,那也会有所帮助。
答案 0 :(得分:0)
您达到了1台计算机的限制,因此必须在多台计算机的分布式环境中执行。
您可以在自己的环境中设置JMeter的distributed testing 或使用blazemeter或其他基于云的负载测试工具
我们可以使用BlazeMeter,它为我们提供了一种简单的方式来处理负载测试。我们需要做的就是将我们的JMX文件上传到BlazeMeter。我们还可以上传包含所有必要数据的整合CSV文件,BlazeMeter会根据我们设置的引擎数量来进行拆分。
在BlazeMeter上,我们可以设置要应用于测试的用户数量或引擎(从属系统)和线程的组合。我们还可以配置其他值,例如多个位置。
答案 1 :(得分:0)
1k并发听起来很低,这是其他原因……它也是许多Linux发行版中默认的打开文件描述符限制数量,因此请尝试提高该限制。
ulimit -Sn
将显示您当前的限额和
ulimit -Hn
将向您显示硬性限制,您必须触摸配置文件。以根用户身份编辑/etc/security/limits.conf并设置
yourusername soft nofile 50000
yourusername hard nofile 50000
您的用户名-必须是运行jmeter的用户的用户名。
在此之后,您可能必须重新启动才能使更改生效。如果不在Linux上,我不知道该如何实际操作,则必须使用google:D
推荐: 作为k6开发人员,我可以将其推荐为替代工具,但是在一台计算机上运行10k VU也会很困难。每个VU都会占用一些内存-至少需要1-3mb,这会占用较大的脚本空间。但是使用32gb,您仍然可以运行高达1-2kVU,并使用http.batch发出并发请求,这些请求可以模拟10k VU,具体取决于您的实际工作流程。
我设法在一个虚拟机中的单个3770 i7 CPU和4GB RAM上以300VU运行stages sample,并为相邻物理机上的另一个虚拟机获得6.5k + rps(延迟非常低)因此,也许1.5-2kVU具有一些更有趣的脚本和更高的延迟,因为这将使golang有时间在等待tcp数据包时实际运行GC。如果您不需要discardResponseBodies,即使您确实需要一些帮助,我也强烈建议您使用它们。这对每个VU的内存消耗有很大帮助