架構師訓練營第 1 期 - 第 07 周作業
1. 性能压测的时候,随着并发压力的增加,系统响应时间和吞吐量如何变化,为什么?
性能壓測依據併發的壓力可以分為三個階段
1. 性能測試階段
此階段在系統設計規劃的併發壓力範圍之內
當併發壓力持續增加
系統的吞吐量會有近似線性的增加
系統的響應時間只會微幅的變慢
原因
併發壓力在設計之內
系統的資源也很充足
所以併發壓力不會影響系統處理用戶請求
2. 負載測試階段
此階段已超過系統設計規劃,但尚在服務器最高可容許的範圍之內
當併發壓力持續增加
系統吞吐量的增加比例會減緩
系統的響應時間會有較大幅度的變慢
原因
因為此時服務器的資源開始不足
雖然開始不足,但還是能處理比性能測試階段更多的請求
所以吞吐量還是會增加,只是比例沒有那麼大
較多的線程會等待 CPU 的調度、等待鎖、等待網路 I/O等
在等待時就會影響響應的時間
3. 壓力測試階段
此時已經超過服務器可以負荷的最高容許範圍
當併發壓力持續增加
系統的吞吐量會開始下降
系統的響應時間會有更大幅度的變慢,直到最後系統崩潰不響應
原因
因為服務器的資源開始大量的不足
大部分的線程都在等待服務器的資源
內存大量的不足,處理能力都消耗在硬盤及內存的置換上
處理用戶的請求能力下降,導致吞吐量降低
因為服務器的處理請求能力持續下降
導致請求的處理時間持續變長,響應時間也極速的變慢
最後導致系統崩潰不響應
2. 用你熟悉的编程语言写一个 Web 性能压测工具,输入参数:URL,请求总次数,并发数。输出参数:平均响应时间,95% 响应时间。用这个测试工具以 10 并发、100 次请求压测 www.baidu.com
說明:
TestThread 繼承 thread.Thread
使用 _execute(...) 置換代入的 target function
在 _execute(...) 中執行所設定的測試次數
記錄每一次測試所需的時間
每一次測試到下次測試間需隔一段時間
目前是 100 ms
如果不間隔,則百度網會在中間測試時拒絕,無法達到所需測試的次數
根據併發數的設定,產生相對應個數的 TestThread
將所有測試的結果(每一次響應時間)集合在一個 list 中
利用 pandas 算出所需的響應平均值及 95%響應時間
版权声明: 本文为 InfoQ 作者【Panda】的原创文章。
原文链接:【http://xie.infoq.cn/article/688e115271882c8124a1d9a6d】。未经作者许可,禁止转载。
评论