【问题标题】:Grinder - hit multiple urls using multiple threads from same processGrinder - 使用来自同一进程的多个线程点击多个 url
【发布时间】:2012-03-27 09:12:15
【问题描述】:

我正在使用 The Grinder - 版本 3.7.1 进行负载测试。我的测试涉及访问一百万个这种格式的网址:

例如:www.someDomain.com/a_1.com www.someDomain.com/a_2.com

所以,如果我这样使用 The Grinder,每个进程都会使用一个 url,这在我的情况下是不可行的。所以,我希望每个线程都占用一个 url。但是,我不知道如何在磨床中实现这一点。

【问题讨论】:

    标签: python jython grinder


    【解决方案1】:

    您可以在磨床脚本中动态构建网址。只需使用标准的 python 字符串替换技术。您的解决方案可能如下所示:

        from net.grinder.script.Grinder import grinder
        from net.grinder.script import Test
        from net.grinder.plugin.http import HTTPRequest
    
        test1 = Test(1, "Request resource")
        request1 = test1.wrap(HTTPRequest())
    
        class TestRunner:
    
            def _get_url(self):
                url = ""
                # build your url here
                # ...
                return url
    
            def __call__(self):
                result = request1.GET(self._get_url())
    

    以下是一些可能有用的其他示例脚本:

    http://grinder.sourceforge.net/g3/script-gallery.html

    您可以从数据文件中读取 URL,或动态构建它们。 Grinder API 让您可以访问线程编号和迭代,这可能对您的任务有用。

    【讨论】:

    • 嗨 Travis,我尝试从文件中读取 url。但是一个线程不占用一个url。一个进程占用一个 url。我可以获取线程号并手动为其分配 url 吗?
    • 线程、进程或 url 之间没有严格的耦合。您为每个线程冷分配任意数量的 url。您甚至可以为每个线程的每次迭代设置一个唯一的 url。 Python 有一组丰富的字符串操作技术,您可以使用这些技术来达到此目的。您可以通过访问grinder.threadNumber 和grinder.runNumber 获取有关当前线程的信息。有关如何执行此操作的示例,请参阅脚本库(在答案中链接)。
    • 好的,谢谢。我也在查看其他负载测试引擎,发现使用 JMeter 更容易。但我也会像你在 Grinder 中所说的那样尝试。
    猜你喜欢
    • 2013-09-29
    • 2016-07-27
    • 1970-01-01
    • 2018-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多