1. 程式人生 > >如何生成每秒百萬級別的 HTTP 請求

如何生成每秒百萬級別的 HTTP 請求

本文是構建能夠每秒處理 3 百萬請求的高效能 Web 集群系列文章的第一篇。它記錄了我使用負載生成器工具的一些經歷,希望它能幫助每一個像我一樣不得不使用這些工具的人節省時間。

負載生成器是一些生成用於測試的流量的程式。它們可以向你展示伺服器在高負載的情況下的效能,以及讓你能夠找出伺服器可能存在的問題。通過負載測試瞭解伺服器的缺點,是測試伺服器彈性以及未雨綢繆的好方法。

負載生成工具(Load-Generating Tools)

在進行負責測試時要牢記一件重要的事:你能在 Linux 上建立多少個 socket 連線。這個限制是硬編碼在核心裡的,最典型的就是臨時 W 埠的限制

。(在某種程度上)你可以在 /etc/sysctl.conf 裡擴充套件它。但是基本上,一臺 Linux 機器只能同時開啟大約 64,000 個 socket 。因此在負載測試時,我們不得不通過在單一的連線上儘可能多地發出請求來充分利用 socket 。 除此之外,我們還需要不止一臺的機器來產生負載。否則,負載生成器會把可用的 socket 佔用導致不能產生足夠的負載。

我一開始用的是‘ab’,Apache Bench 。它是我所知道的 http 基準測試工具中最簡單、最通用的。並且它是 Apache 附帶的產品,因此它可能已經存在於你的系統中。不幸的是,我在使用它的時候每秒大約只能生成 900 個請求。雖然我見過其他人使用它每秒能達到 2,000 個請求,但我可以立即告訴你,‘ab’並不適合我們的基準測試。

Httperf

接著,我嘗試了 ‘httperf’。這個工具更強大,但是它依然相對簡單並且功能有限。要算出每秒生產了多少個請求並不是僅傳遞引數那麼簡單。經過我的多次嘗試,獲取了每秒超過幾百請求的結果。例如:

它以每秒 1,000 個的速率建立了 100,000 個會話(session)。每次會話發起 5 次請求,時間間隔為 2 秒。

Shell
1httperf--hog--server=192.168.122.10--wsess=100000,5,2--rate1000--timeout5
Shell
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 Total:connections117557requests219121replies116697test-duration111.423s Connection rate:1055.0conn/s(0.9ms/conn,<=1022concurrent connections) Connection time[ms]:min0.3avg865.9max7912.5median459.5stddev993.1 Connection time[ms]:connect31.1 Connection length[replies/conn]:1.000 Request rate:1966.6req/s(0.5ms/req) Request size[B]:91.0 Reply rate[replies/s]:min59.4avg1060.3max1639.7stddev475.2(22samples) Reply time[ms]:response56.3transfer0.0 Reply size[B]:header267.0content18.0footer0.0(total285.0) Reply status:1xx=02xx=1166973xx=04xx=05xx=0 CPU time[s]:user9.68system101.72(user8.7%system

相關推薦

如何生成百萬級別的 HTTP 請求

本文是構建能夠每秒處理 3 百萬請求的高效能 Web 集群系列文章的第一篇。它記錄了我使用負載生成器工具的一些經歷,希望它能幫助每一個像我一樣不得不使用這些工具的人節省時間。 負載生成器是一些生成用於測試的流量的程式。它們可以向你展示伺服器在高負載的情況下的效能

第一篇:如何生成百萬級別的 HTTP 請求

 本文是構建能夠每秒處理 3 百萬請求的高效能 Web 集群系列文章的第一篇。它記錄了我使用負載生成器工具的一些經歷,希望它能幫助每一個像我一樣不得不使用這些工具的人節省時間。 負載生成器是一些生成用於測試的流量的程式。它們可以向你展示伺服器在高負載的情況下的效能,以及

如何生成百萬級別的 HTTP 請求

本文是構建能夠每秒處理 3 百萬請求的高效能 Web 集群系列文章的第一篇。它記錄了我使用負載生成器工具的一些經歷,希望它能幫助每一個像我一樣不得不使用這些工具的人節省時間。 負載生成器是一些生成用於測試的流量的程式。它們可以向你展示伺服器在高負載的情況

Facebook兆級別圖片存儲及百萬級別圖片查詢原理

避免 決定 volume 流程 mac 便是 blog 前言 HA 前言 Facebook(後面簡稱fb)是世界最大的社交平臺,需要存儲的數據時刻都在劇增(占比最大為圖片,每天存儲約20億張,大概是微信的三倍)。 那麽問題來了,fb是如何存儲兆級別的圖片?並且又是如何處理每

Facebook兆級別圖片儲存及百萬級別圖片查詢原理

前言 Facebook(後面簡稱fb)是世界最大的社交平臺,需要儲存的資料時刻都在劇增(佔比最大為圖片,每天儲存約20億張,大概

Ulord祭出側鏈大招,交易速度將實現百萬筆,遠超支付寶!

百萬TPS——區塊鏈行業的一座“里程碑”,誰擁有了這項技術,誰就擁有了開啟區塊鏈3.0之門的鑰匙。 1.TPS之戰,是公鏈之爭中的生死之戰 TPS過低問題一直困擾著區塊鏈市場。 TPS,也叫主網吞吐量,即區塊鏈每秒鐘新產生的交易記錄,它能影響交易速度。目前公鏈超低的TPS,使其無法支援現實世界的大規模交

百萬級高效C++非同步日誌實踐

非同步日誌與佇列實現的缺點 非同步日誌,按我的理解就是主執行緒的日誌列印介面僅負責生產日誌資料(作為日誌的生產者),而日誌的落地操作留給另一個後臺執行緒去完成(作為日誌的消費者),這是一個典型的生產-消費問題,如此一來會使得: 主執行緒呼叫日誌列印介面成為非阻塞操作,同步的磁碟IO從主執行緒中剝離出來

資深程序員用Python實現處理 120 萬次 HTTP 請求!什麽概念

更多 PE aws wsgi 語言 對象 虛擬 釋放 功能 Python 的微框架(藍色)、NodeJS 和 Go (綠色) 和 Japronto (紫色) 勘誤表:用戶 @heppu 提到,如果謹慎點用 Go 的 stdlib HTTP 服

網絡是怎樣連接的-第一章-生成HTTP請求消息(下)

顯示圖片 大致 相關 有效 1.5 文件內容 ctu 怎樣 消息頭 1.1.5 生成 HTTP 請求消息 理解了 HTTP 的基本知識之後,讓我們回到對瀏覽器本身的探索中來。 對 URL 進行解析之後,瀏覽器確定了 Web 服務器和文件名,接下來就是根據這些信息來生成 HT

第 1 部分 生成 HTTP 請求訊息

1.1探索之旅從輸入網址開始 我們的探索之旅從在瀏覽器中輸入網址開始。網址,準確來說應該叫 URL。常見的網址開頭有:http:、ftp:、file:、mailto:等等。 之所以有各種各樣的 URL,是因為儘管我們通常是使用瀏覽器來訪問 Web 伺服器的,但實

Apache Kafka基準測試:寫入2百萬(在三臺廉價機器上)

原文連結  譯者:astron  原文作者: Jay Kreps 2014年4月27日 我寫過一篇LinkedIn如何使用Apache Kafka作為集中釋出訂閱日誌,以便在應用程式,流處理和Hadoop之間整合資料的部落格文章。 為了達到這樣的目的,這個“通用日誌”必須是一個簡單的抽象。

Twitter的分散式雪花演算法 SnowFlake 自增生成26個萬個可排序的ID (Java版)

分散式系統中,有一些需要使用全域性唯一ID的場景,這種時候為了防止ID衝突可以使用36位的UUID,但是UUID有一些缺點,首先他相對比較長,另外UUID一般是無序的。 有些時候我們希望能使用一種簡單一些的ID,並且希望ID能夠按照時間有序生成。 而twit

生成一千萬個【可視有序】分散式ID的簡單方案

去年做了一個產品,會經常匯入匯出大量的外部資料,這些資料的ID有的是GUID型別,有的是字串,也有的是自增。GUID型別沒有順序,結果要排序得藉助其它業務欄位,整體查詢效率比較低;字串ID本來是用來轉換GUID的或者數字ID的,結果有些字串ID不符合規範,常常有特殊資料需要處理;自增主鍵ID的資料匯入合併經常

2-生成Http請求報文-BuildRequest

webtest工作的第二步是生成http請求報文,對應函式BuildRequest(const char *url);。 Http請求報文的格式請參見我的部落格“HTTP權威指南”的“3-HTTP Messages”一文,您也可以直接閱讀RFC2616

linux curl請求一次 成功後終止

#!/bin/bash while [ true ]; do /bin/sleep 2 #幾秒請求一次 rst=`curl -H 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8' -H 'User-Agen

QPS(req/sec 請求數)、PV 、RT (響應時間) 之間的關係

在進行系統性能壓測和系統性能優化的時候,會涉及到QPS,PV,RT相關的概念, 本文總結一下QPS,PV,RT之間的關係,放在部落格備忘,本文參考了之前在淘寶工作時候的一些資料。 QPS是什麼? QPS:單個程序每秒請求伺服器的 成功次數 QPS = req/sec

Nginx限制IP併發連線數及處理請求

為了防止伺服器被惡意採集或ddos攻擊給搞死, 所以給限個速。 這裡主要使用Nginx的ngx_http_limit_req_module和ngx_http_limit_conn_module來控制訪問量. 這兩個模組在Nginx中已內建, 在nginx.conf檔案

springBoot 日誌按天生成日誌檔案,以及配置生成HTTP 請求的日誌,列印引數(版本1.5.9)

日誌按天生成日誌檔案  logback-spring.xml   內容如下(放到application.properties 所在資料夾裡面):  <?xml version="1.0" encoding="UTF-8"?> <configuration

[大型網站優化技術] -- 減少HTTP請求之將圖片轉成二進位制並生成Base64編碼,可以在網頁中通過url檢視圖片

1 <?php 2 $pathinfo = pathinfo($_SERVER['SCRIPT_FILENAME']); 3 define('ROOT', $pathinfo['dirname']); 4 5 function generateIcon_

Apache ab測試工作用法看你的apache處理多少請求

windows 下先執行cmd 然後 輸入apache的bin目錄 然後執行 ab -n1000 -c10 http://www.qq.com/ 比如我的是這樣的 我的apache目錄是在 G:/APMServ5.2.6/Apache/bin/ 下面是執行步驟 在XP