我们有一个巨大的不同网址文件(~500K - ~100 urls)
我们希望使用Grinder 3将这些网址分发给工人,每个工作人员都会调用一个不同的网址。
在JY脚本中,我们可以:
每个代理商阅读一次文件
为每个代理分配行号范围
每个Worker都会根据其代理行号范围内的run-id获取一行/ url。
这仍然意味着将一个巨大的文件加载到内存中并将一些代码写入一个可能对许多人来说很常见的问题。
对更简单/现成的解决方案的任何想法?
答案 0 :(得分:0)
前一段时间我以类似的方式使用了Grinder,并编写了一个实用程序,用于多线程,一次性从大文件中提取URL。
请参阅https://bitbucket.org/travis_bear/file_util - 特别是顺序阅读器。
我建议使用split
命令行实用程序(或类似工具)在执行Grinder运行之前为每个代理提供单独的主文件块。
答案 1 :(得分:0)
如果你喜欢,我会采取不同的方法,因为它是一个巨大的文件, 你计划产生多少个线程。我相信你已经知道你可以得到Grinder.ThreadNo来获取当前正在执行的线程。 实际上,您可以使用具有相同记录数的预处理器将文件划分为线程数,并将它们命名为0,1,2等与线程名称匹配。
为什么我建议这样处理文件看起来像一个重要的前任务是它的内容。执行线程时,文件处理不应该干扰。
所以现在每个线程都有自己的文件,没有冲突。
例如20个线程20个文件,但是你的线程数应该仔细选择,可能是峰值+ 50%。