我正在运行grinder来测试一个POST URI与10个不同的json体。grinder给出的响应时间不合适。单独的json体测试给出了合理的响应时间,虽然10个不同json体的脚本给出了非常高的响应时间和非常低的tps。我使用1个代理,5个工作进程和15个线程。谁能帮我找出问题出在哪里吗?
我使用的脚本是:-
`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())`
第一步是使用1个线程、1个进程和1个代理运行它。我希望它能正常运行。
由于使用了for循环,因此看起来所有脚本都将为每个线程运行。我认为你想要/应该做的是每个线程应该发送一个请求。
你可以把请求移到一个全局方法中,取一些随机数,比如Grinder。并使用它来返回要执行的脚本。这还要求您删除for循环,因为您可以控制脚本执行的次数,或者让它运行一段时间。
并行运行10个线程是一个很好的数字,然后慢慢地你可以看到有多少请求实际上被接受。