-1

我正在运行磨床来测试具有 10 个不同 json 主体的 POST URI。研磨机给出的响应时间不正确。单个 json 正文测试给出了合理的响应时间,尽管 10 个具有 10 个不同 json 正文的脚本给出了非常高的响应时间和非常低的 tps。我正在使用具有 5 个工作进程和 15 个线程的 1 个代理。有人可以帮我找出问题所在吗?

我使用的脚本是:-

`from net.grinder.script.Grinder import grinder
from net.grinder.script import Test
from net.grinder.plugin.http import HTTPRequest
from HTTPClient import NVPair
from java.io import FileInputStream
test1 = Test(1, "Request resource")
request1 = HTTPRequest()
#response1 = HTTPResponse()
test1.record(request1)
log = grinder.logger.info
class TestRunner:
    def __call__(self):
            #request1.setDataFromFile("ReqBody.txt")
            payload1 = FileInputStream("/home/ubuntu/grinder-3.11/scripts/Req.txt")
            payload2 = FileInputStream("/home/ubuntu/grinder-3.11/scripts/Req2.txt")
            payload3 = FileInputStream("/home/ubuntu/grinder-3.11/scripts/Req3.txt")
            payload4 = FileInputStream("/home/ubuntu/grinder-3.11/scripts/Req4.txt")
            payload5 = FileInputStream("/home/ubuntu/grinder-3.11/scripts/Req5.txt")
            payload6 = FileInputStream("/home/ubuntu/grinder-3.11/scripts/Req6.txt")
            payload7 = FileInputStream("/home/ubuntu/grinder-3.11/scripts/Req7.txt")
            payload8 = FileInputStream("/home/ubuntu/grinder-3.11/scripts/Req8.txt")
            payload9 = FileInputStream("/home/ubuntu/grinder-3.11/scripts/Req9.txt")
            payload10 = FileInputStream("/home/ubuntu/grinder-3.11/scripts/Req10.txt")

            headersPost = [NVPair('Content-Type', ' application/json')]
            #request1.setHeaders(headersPost)
            #request1.setHeaders
            myload = [payload1, payload2, payload3, payload4, payload5, payload6, payload7, payload8, payload9, payload10]
            for f in myload:
                result1 = request1.POST("http://XX.XX.XX.XX:8080/api/USblocks/ORG101/1/N/",f,headersPost)
                log(result1.toString())`
4

1 回答 1

1

您的第一步是使用 1 个线程 1 个进程和 1 个代理运行它。我希望它能正常运行。

看起来自从使用了 for 循环以来,所有脚本都将为每个线程运行。我认为您想要/应该做的是每个线程都应该发送一个请求。

您可以将请求移到全局方法并获取一些随机数,例如 Grinder.threadNo 并使用它来返回要执行的脚本。这还要求您删除 for 循环,因为您可以控制脚本执行的次数或让它运行一段时间。

并行运行 10 个线程是一个很好的开始,然后慢慢你可以看到实际接受了多少请求。

于 2016-08-12T15:52:59.353 回答