架构师训练营 Week7 作业
发布于: 2020 年 07 月 21 日
1) 用你熟悉的编程语言写一个 web 性能压测工具,输入参数:URL,请求总次数,并发数。输出参数:平均响应时间,95% 响应时间。用这个测试工具以 10 并发、100 次请求压测 www.baidu.com。
以下是基于.net core 版本写的一段请求并发数,请求地址,请求总数的时间性能统计.
ConcurrentQueue<decimal> costTime = new ConcurrentQueue<decimal>(); Console.WriteLine("请输入并发数:"); var currentCount = Console.ReadLine(); int.TryParse(currentCount, out int current); var cacheCurrent = current; var list = new List<int>(); while(current > 0) { list.Add(current--); } Console.WriteLine("请输入请求地址:"); var urlAddress = Console.ReadLine(); Console.WriteLine("请输入请求总数:"); var totalNumber = Console.ReadLine(); int.TryParse(totalNumber, out int total); var cache = total; //请求总次数 while (total > 0) { //并发数 var tasks = list.Select(async i=> { using (var httpClient = new HttpClient()) { var sw = new Stopwatch(); sw.Start(); var response = await httpClient.GetAsync(urlAddress).ConfigureAwait(false); var responseContent = await response.Content.ReadAsStringAsync().ConfigureAwait(false); sw.Stop(); costTime.Enqueue(sw.ElapsedMilliseconds); } }); await Task.WhenAll(tasks); --total; } var sortedList = new List<decimal>(costTime).OrderByDescending(item => item).ToList(); var averageTime = sortedList.Sum() / sortedList.Count();//平均时间 var index = 0; decimal sum = 0; var number = Convert.ToInt32(cache * cacheCurrent * 0.05); //95% foreach (var item in sortedList) { if (index >= number) { sum += item; } ++index; } var mostAverage = sum / (sortedList.Count() - number); Console.WriteLine("Hello World!");复制代码
划线
评论
复制
发布于: 2020 年 07 月 21 日阅读数: 59
Frank Zeng
关注
还未添加个人签名 2018.09.17 加入
还未添加个人简介











评论