Performance Grinder-如何从文件分发URL调用

Performance Grinder-如何从文件分发URL调用,performance,scalability,load-testing,grinder,Performance,Scalability,Load Testing,Grinder,我们有大量不同的URL(~500K-~1M URL)。 我们希望使用Grinder 3将这些url分发给工作人员,使每个工作人员都能调用一个不同的url。 在JY脚本中,我们可以: 每个代理读取文件一次 为每个代理分配行号范围 每个工作者都将根据其代理行号范围中的运行id获取一行/url 这仍然意味着将一个巨大的文件加载到内存中,并编写一些代码来解决许多人可能遇到的问题 对于一个更简单/现成的解决方案有什么想法吗?我不久前以类似的方式使用了Grinder,并编写了一个实用程序,用于多线程一次

我们有大量不同的URL(~500K-~1M URL)。
我们希望使用Grinder 3将这些url分发给工作人员,使每个工作人员都能调用一个不同的url。

在JY脚本中,我们可以:

  • 每个代理读取文件一次

  • 为每个代理分配行号范围

  • 每个工作者都将根据其代理行号范围中的运行id获取一行/url

这仍然意味着将一个巨大的文件加载到内存中,并编写一些代码来解决许多人可能遇到的问题


对于一个更简单/现成的解决方案有什么想法吗?

我不久前以类似的方式使用了Grinder,并编写了一个实用程序,用于多线程一次性从一个大文件中摄取URL

请特别参阅顺序读取器


我建议在执行Grinder运行之前,使用
split
命令行实用程序(或类似工具)将主文件的各个部分分别提供给每个代理。

如果您愿意,我会采取不同的方法,因为它是一个大文件, 您计划生成多少线程。我相信您已经知道可以获取Grinder.ThreadNo来获取当前正在执行的线程。 实际上,您可以使用具有相同记录数的预处理器将文件划分为线程数,并将它们命名为0、1、2等,这与线程名匹配

我之所以建议这样做,是因为处理文件看起来像是一项预任务,重要的是它的内容。执行线程时,文件处理不应干扰

所以现在每个线程都有自己的文件,没有冲突


但是,对于例如20个线程20个文件,您的线程数应该仔细选择,可能是峰值+50%。

这肯定有助于实际读取文件,但我们仍然认为有一个标准代码用于将工作分发给代理和工作人员。