<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 性能測試 性能測試應該有兩個方向: - 單接口壓力測試 - 生產環境模擬用戶操作高壓力測試 生產環境模擬測試,目前我們都是交給公司的QA團隊專門完成的。這塊我只能粗略列舉一下: - 獲取1000用戶以上生產用戶的訪問日志(統計學要求1000是最小集合) - 計算指定時間內(例如10分鐘),所有接口的觸發頻率 - 使用測試工具(loadrunner, jmeter等)模擬用戶請求接口 - 適當放大壓力,就可以模擬2000、5000等用戶數的情況 #### ab 壓測 單接口壓力測試,我們都是由研發團隊自己完成的。傳統一點的方法,我們可以使用ab(apache bench)這樣的工具。 ~~~ #ab -n10 -c2 http://haosou.com/ -- output: ... Complete requests: 10 Failed requests: 0 Non-2xx responses: 10 Total transferred: 3620 bytes HTML transferred: 1780 bytes Requests per second: 22.00 [#/sec] (mean) Time per request: 90.923 [ms] (mean) Time per request: 45.461 [ms] (mean, across all concurrent requests) Transfer rate: 7.78 [Kbytes/sec] received ... ~~~ 大家可以看到ab的使用超級簡單,簡單的有點弱了。在上面的例子中,我們發起了10個請求,每個請求都是一樣的,如果每個請求有差異,ab就無能為力。 #### wrk 壓測 單接口壓力測試,為了滿足每個請求或部分請求有差異,我們試用過很多不同的工具。最后找到了這個和我們距離最近、表現優異的測試工具[wrk](https://github.com/wg/wrk),這里我們重點介紹一下。 wrk如果要完成和ab一樣的壓力測試,區別不大,只是命令行參數略有調整。下面給大家舉例每個請求都有差異的例子,供大家參考。 > scripts/counter.lua ~~~ -- example dynamic request script which demonstrates changing -- the request path and a header for each request ------------------------------------------------------------- -- NOTE: each wrk thread has an independent Lua scripting -- context and thus there will be one counter per thread counter = 0 request = function() path = "/" .. counter wrk.headers["X-Counter"] = counter counter = counter + 1 return wrk.format(nil, path) end ~~~ > shell執行 ~~~ # ./wrk -c10 -d1 -s scripts/counter.lua http://baidu.com Running 1s test @ http://baidu.com 2 threads and 10 connections Thread Stats Avg Stdev Max +/- Stdev Latency 20.44ms 3.74ms 34.87ms 77.48% Req/Sec 226.05 42.13 270.00 70.00% 453 requests in 1.01s, 200.17KB read Socket errors: connect 0, read 9, write 0, timeout 0 Requests/sec: 449.85 Transfer/sec: 198.78KB ~~~ > WireShark抓包印證一下 ~~~ GET /228 HTTP/1.1 Host: baidu.com X-Counter: 228 ...(應答包 省略) GET /232 HTTP/1.1 Host: baidu.com X-Counter: 232 ...(應答包 省略) ~~~ wrk是個非常成功的作品,它的實現更是從多個開源作品中挖掘牛X東西融入自身,如果你每天還在用C/C++,那么wrk的成功,對你應該有絕對的借鑒意義,多抬頭,多看牛X代碼,我們絕對可以創造奇跡。 引用[wrk](https://github.com/wg/wrk)官方結尾: ~~~ wrk contains code from a number of open source projects including the 'ae' event loop from redis, the nginx/joyent/node.js 'http-parser', and Mike Pall's LuaJIT. ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看