我正在运行grinder以测试具有10个不同json主体的POST URI。研磨机给出的响应时间不合适。个人json身体测试给出了合理的响应时间,尽管10个脚本与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())`
答案 0 :(得分:1)
第一步是使用1个线程1进程和1个代理运行它。我希望它能正常运行。
它看起来因为使用了循环所有脚本将为每个线程运行。 我认为你想要/应该做的是每个线程应该发送一个请求。
您可以将请求移出到全局方法并获取一些随机数,如Grinder.threadNo,并使用它来返回要执行的脚本。这也要求您删除for循环,因为您可以控制脚本执行的次数或使其保持运行一段时间。
并行运行10个线程是一个很好的数字,然后慢慢地你可以看到实际上有多少请求被接受。