簡體   English   中英

測試對基於 REST 的 Web 服務器的並發請求

[英]Test concurrent requests to a REST based web server

如何向基於 REST 的 Web 服務器模擬數以千計的 GET 和 PUT 請求?是否有可用的工具?如果有,有哪些可用的工具?

ab - Apache HTTP 服務器基准測試工具http://httpd.apache.org/docs/2.0/programs/ab.html

這是測試 REST API 的絕佳工具。

例子:

ab -c 100 -n 100 http://service/path/to/resource

在這個例子中:

  • “-c 100”表示 100 個並發請求和
  • “-n 100”表示100個請求

我知道這是一個老問題,但是我需要一個簡單的基於 AJAX 的腳本來測試多個並發連接。 如果你們中的任何人有類似的要求,那么你也可以像這樣使用你的測試。

模擬多個 Ajax 請求的 JS 代碼快照

請查看此 js 小提琴鏈接或參見附件(以適合您的方式為准,因為兩者都指向相同的 javascript 代碼)

 var interval; var queue = []; var globalElapsedTime; function getUrl() { return $.trim($("#txtAjayUrl").val()); } $("#btnLaunchRequests").on("click", function () { queue = []; $("#divTimeElapsed").html("<i>calculating</i>"); globalElapsedTime = window.performance.now(); $("#divRequestStatus").show(); $("#btnLaunchRequests").prop("disabled", true); var totalRequests = 50; var inputValue = $("#txtNumberOfConcurrentRequests").val(); totalRequests = inputValue.trim(); $("#divTotalNumberOfProcessed").html(totalRequests.toString()); if (interval != null && interval != undefined) { clearInterval(interval); } interval = window.setInterval(function () { $("#divNumberOfCurrentRequests").text(queue.length); }, 500); for (let i = 1; i <= totalRequests; i++) { console.log("Loop No. " + i); if (i == totalRequests) { $.get(getUrl(), function (data) { queue.push("1"); $("#btnLaunchRequests").prop("disabled", false); $("#divNumberOfCurrentRequests").text(queue.length); //clearInterval(interval); }).always(function () { $("#btnLaunchRequests").prop("disabled", false); globalElapsedTime = window.performance.now() - globalElapsedTime; globalElapsedTime = Math.round((globalElapsedTime / 1000) * 100) / 100; console.log("%cLast Result Processed in " + globalElapsedTime + " Seconds.", "color:green"); $("#divTimeElapsed").text(globalElapsedTime + " seconds"); }); } else { $.get(getUrl(), function (data) { queue.push("1"); }); } } });
 <link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script> <script type="text/javascript" src="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script> <div class="container"> <div class="row" style="padding-top:50px;"> <div class="col-sm-12"> <h3>HTTP GET Concurrent Requests Tester</h3> </div> </div> <div class="row"> <div class="col-sm-12"> <ul> <li>Sample Ajax URL for concurrent request testing: <input type="text" id="txtAjayUrl" value="http://localhost:4500/Api/Home/GetCustomerDetails/36603/Test" style="width:100%"> <br><br> </li> <li><input type="number" value="50" id="txtNumberOfConcurrentRequests"> <input type="button" value="Launch Concurrent Requests" id="btnLaunchRequests"> <br></li> </ul> </div> </div> <div class="row" id="divRequestStatus" style=""> <div class="col-sm-12"> <table class="table table-bordered"> <thead> <tr> <th> Total Number of Requests </th> <th> Total Number of Requests Processed </th> <th> Total Time Elapsed </th> </tr> </thead> <tbody> <tr> <td> <div id="divTotalNumberOfProcessed"></div> </td> <td> <div id="divNumberOfCurrentRequests" style="font-weight: bolder;"></div> </td> <td> <div id="divTimeElapsed"></div> </td> </tr> </tbody> </table> </div> </div> </div>

幾乎任何 HTTP 性能測試工具,無論是商業的還是開源的,都可用於對 REST 接口進行性能測試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM