写点什么

架构师第一期作业(第 7 周)

用户头像
Cheer
关注
发布于: 2020 年 11 月 05 日

性能压测的时候,随着并发压力的增加,系统响应时间和吞吐量如何变化,为什么?

在系统最大负载点之前,系统响应时间随并发压力增加平稳增加;当到达系统最大负载点后,再增加并发压力时,响应时间将急剧上升,呈翘尾上升形状。



在系统最大负载点之前,系统吞吐量随并发量增加而增加;达到系统压力点后,系统吞吐量反而会快速下降,呈抛物线形状,最大值处就是系统压力点。



原因在于:到达系统最大负载点后,系统资源已经被耗尽;随着并发压力进一步增大,新增加的请求没有足够的资源处理,导致整体性能急剧下降,平均响应时间急剧上升,这样反过来会降低整体吞吐量。当系统资源被击穿,整个系统崩溃,吞吐量降为0。



用你熟悉的编程语言写一个 Web 性能压测工具,输入参数:URL,请求总次数,并发数。输出参数:平均响应时间,95% 响应时间。用这个测试工具以 10 并发、100 次请求压测 www.baidu.com

require 'net/http'
require 'uri'
require 'benchmark'
def test_url url
time = Benchmark.measure do
Net::HTTP.get(URI(url))
end
time.real
end
def press_test url, count, concurrent
threads = []
result = []
concurrent.times do |i|
thread = Thread.new {
count.times do |j|
t = test_url url
result << t
end
}
threads << thread
end
threads.each { |t| t.join }
result.sort!
avg_time = result.sum / result.count
percent_95_time = result[(result.count * 0.95).floor]
puts "平均响应时间:#{avg_time * 1000}ms"
puts "95%响应时间:#{percent_95_time * 1000}ms"
end
press_test 'http://www.baidu.com', 10, 10



发布于: 2020 年 11 月 05 日阅读数: 26
用户头像

Cheer

关注

还未添加个人签名 2018.11.25 加入

还未添加个人简介

评论

发布
暂无评论
架构师第一期作业(第 7 周)