写点什么

架构师训练营 Week7 作业

用户头像
Frank Zeng
关注
发布于: 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!");
复制代码


用户头像

Frank Zeng

关注

还未添加个人签名 2018.09.17 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营Week7作业