如何像在.netCore中通过Jmeter调用一样快速地同时调用外部服务



我有一个外部服务,我想以大约1000倍的速度调用它。当我通过jmeter发送1000个请求时,它在6秒内完成,但当我在代码中使用类型化客户端和并行调用它时。循环重复1000次,大约需要35秒!如何像jmeter一样快速发送这些请求和接收数据?

这是我的代码:

Parallel.For(0, 1000, i =>
        {
            var data = _client.PostAsJsonAsync(_siteSetting.NahabClientConfig.TokenEndpoint, personInquiryNidRequest).Result;
            var result = data.Content.ReadFromJsonAsync<OuterApiResult>().Result;
        });

试试看:

var tasks = Enumerable.Range(0, 1000).Select(async i => {
   var data = await _client.PostAsJsonAsync(_siteSetting.NahabClientConfig.TokenEndpoint, personInquiryNidRequest);
   var result = await data.Content.ReadFromJsonAsync<OuterApiResult>();
});
await Task.WhenAll(tasks)

Task.When所有请求都同时运行。任务。结果阻塞线程直到请求结束,并且您不能有效地使用CPU IO。

最新更新