1. 程式人生 > >知道什麼網站併發量嗎?如何測試呢?這個必須瞭解瞭解。。。。

知道什麼網站併發量嗎?如何測試呢?這個必須瞭解瞭解。。。。

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

負載生成工具(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 秒。


httperf --hog--server=192.168.122.10 --wsess=100000,5,2 --rate 1000 --timeout 5

Total: connections 117557requests 219121 replies 116697 test-duration 111.423 s

Connection rate: 1055.0 conn/s(0.9 ms/conn, <=1022 concurrent connections)

Connection time [ms]: min 0.3 avg865.9 max 7912.5 median 459.5 stddev 993.1
Connection time [ms]: connect31.1 Connection length [replies/conn]:1.000 Request rate: 1966.6 req/s (0.5ms/req) Request size [B]: 91.0 Reply rate [replies/s]: min 59.4avg 1060.3 max 1639.7 stddev 475.2 (22 samples) Reply time [ms]: response 56.3transfer 0.0 Reply size [B]: header 267.0content 18.0 footer 0.0 (total 285.0) Reply status: 1xx=0 2xx=1166973xx=0 4xx=0 5xx=0 CPU time [s]: user 9.68 system101.72 (user 8.7% system 91.3% total 100.0%) Net I/O: 467.5 KB/s (3.8*10^6bps)

最終,我使用這些設定達到了每秒6,622 個連線:

httperf --hog --server192.168.122.10 --num-conn 100000 --ra 20000 --timeout 5

(總共建立了 100,000 個連線,並且以每秒 20,000 個連線的固定速率建立)

它還有一些潛在的優勢,並且擁有比‘ab‘更多的特性。但它不是我要用在這個專案裡的重量級工具。我需要的是能夠支援分散式多負載測試節點的工具。因此,我的下一個嘗試是:Jmeter。

ApacheJmeter

這是一個功能齊全的 web 應用測試套件,它可以模擬真實使用者的所有行為。你可以使用 Jmeter 的代理去訪問你的網站,進行點選、登陸、模仿使用者可以做的所有行為。Jemeter會把這些行為記錄下來作為測試用例。然後 Jmeter 會反覆執行這些動作來模擬你想要的使用者數量。儘管配置 Jmeter 比 ‘ab‘ 和 ’httperf‘複雜得多,但它是一個很有趣的工具!

根據我的測試,它每秒可以產生14,000 個請求!這絕對是一個好的進展。

我使用了 GooglleCode project 上的一些外掛,並且使用它們的“Stepping Threads”和“HTTP RAW”請求,最終每秒大約可以產生 30,000 個請求!但這已經達到極限了,所以還要尋找另一個工具。這裡有一個我之前的 Jmeter 配置,希望可以幫助到其他人。雖然這個配置離完美相差甚遠,但有時它可以滿足你的要求。

Tsung: 重型的(heavy-duty)、分散式的、多協議測試工具

它每秒基本可以產生 40,000個請求,這絕對是我們想要的工具。類似於 Jmeter,你可以把一些行為記錄下來在測試時執行,並且可以測試大多數的協議。比如 SSL、HHTP、WebDAV、SOAP、PostgreSQL、MySQL、LDAP 和 Jabber/XMPP。與Jmeter 不同的是,它沒有讓人感到迷茫的 GUI 設定,它僅有一個 XML 配置檔案,和一些你選擇的分散式節點的 SSH 金鑰。它的簡潔和效率對我的吸引力,完全不亞於它的健壯性和可擴充套件性。我發現它是一個很強大的工具,在正確的配置下它可以每秒產生百萬級的 HTTP 請求。

除此之外,Tsung 還可以在 html 上產生圖表以及輸入你的測試的詳細報告。測試的結果通俗易懂,並且你甚至可以把這些圖片展示給你的 boss 看!

在這個系列文章的剩餘部分,我還會講解這個工具。現在你可以繼續瀏覽下面的配置說明,或者直接跳到下一頁。

在 CentOS 6.2 上安裝 Tsung

首先,你要安裝(Erlang 需要的) EPEL 源。因此,在進行下一步之前要把它安裝好。安裝完後,繼續安裝你用來產生負載的每個節點需要的包。如果你還沒有在節點之間建立無密碼 SSH 金鑰(passwordless SSH key),那麼請建立之。

yum -y install erlang perlperl-RRD-Simple.noarch perl-Log-Log4perl-RRDs.noarch gnuplotperl-Template-Toolkit firefox

從 Github 或者 Tsung 的官網上下載最新的 Tsung。

wget http://tsung.erlang-projects.org/dist/tsung-1.4.2.tar.gz

解壓並且編譯。

tar zxfv tsung-1.4.2.tar.gz

cd tsung-1.4.2

./configure && make&& make install

把示例配置複製到~/.tsung 目錄裡。這是 Tsung 的配置檔案和日誌檔案的存放地方。

cp /usr/share/doc/tsung/examples/http_simple.xml/root/.tsung/tsung.xml

你可以根據你的需求去編輯這個配置檔案,或者使用我的配置檔案。經過大量的嘗試以及失敗後,我目前的配置檔案在使用 7 個分散式節點時可以每秒產生 5 百萬個 HTTP 請求。

<?xmlversion="1.0"?>

<!DOCTYPE tsung SYSTEM"/usr/share/tsung/tsung-1.0.dtd">

<tsungloglevel="notice" version="1.0">

<clients>

<clienthost="localhost" weight="1" cpu="10"maxusers="40000">

<ipvalue="192.168.122.2"/>

</client>

<clienthost="loadnode1" weight="1" cpu="9"maxusers="40000">

<ipvalue="192.168.122.2"/>

</client>

<clienthost="loadnode2" weight="1" maxusers="40000"cpu="8">

<ipvalue="192.168.122.3"/>

</client>

<clienthost="loadnode3" weight="1" maxusers="40000"cpu="9">

<ipvalue="192.168.122.21"/>

</client>

<clienthost="loadnode4" weight="1" maxusers="40000"cpu="9">

<ipvalue="192.168.122.11"/>

</client>

<clienthost="loadnode5" weight="1" maxusers="40000"cpu="9">

<ipvalue="192.168.122.12"/>

</client>

<clienthost="loadnode6" weight="1" maxusers="40000"cpu="9">

<ipvalue="192.168.122.13"/>

</client>

<clienthost="loadnode7" weight="1" maxusers="40000"cpu="9">

<ipvalue="192.168.122.14"/>

</client>

</clients>

<servers>

<serverhost="192.168.122.10" port="80" type="tcp"/>

</servers>

<load>

<arrivalphasephase="1" duration="10" unit="minute">

<usersmaxnumber="15000" arrivalrate="8"unit="second"/>

</arrivalphase>

<arrivalphasephase="2" duration="10" unit="minute">

<usersmaxnumber="15000" arrivalrate="8"unit="second"/>

</arrivalphase>

<arrivalphasephase="3" duration="30" unit="minute">

<usersmaxnumber="20000" arrivalrate="3"unit="second"/>

</arrivalphase>

</load>

<sessions>

<sessionprobability="100" name="ab" type="ts_http">

<for from="1"to="10000000" var="i">

<request> <httpurl="/test.txt" method="GET" version="1.1"/></request>

</for>

</session>

</sessions>

</tsung>

剛開始的時候有很多東西要理解,但你一旦理解了它們後就會變得很簡單。

<client> 只是簡單地指定了執行 Tsung 的主機。你可以指定 Tsung 使用的 IP 和 CPU 的最大數。你可以使用 maxusers 設定節點能夠模擬的使用者數量上限。每一個使用者都會執行我們之後定義的操作。

<servers> 指定了你要測試的 HTTP 伺服器。我們可以使用這個選項去測試一個 IP 叢集,或者一個單一的伺服器。

<load> 定義了我們的模擬使用者將會在什麼時候“到達”我們的網站。以及它們達到的有多快。

<arrivalphase> 在持續了 10 分鐘的第一個階段裡,以每秒 8 個使用者的速率到達了 15,000 個使用者。

<arrivalphase phase=”1″ duration=”10″ unit=”minute”>

<users maxnumber=”15000″ arrivalrate=”8″ unit=”second”/>

這裡還有兩個 arrivalphases,它們的使用者都以同樣的方式達到。

這些 arrivalphases 一起組成了一個 <load>,它控制了我們可以每秒產生多少個請求。

<session> 這部分定義了一旦這些使用者達到了你的網站,它們將會執行什麼動作。

probability 允許你定義使用者可能會做的隨機事件。有時他們可能點選這裡,有時他們可能點選那裡。所有的Probability 加起來一定要等於 100% 。

在上面的配置裡,使用者只做一件事,所以它的 probability 等於 100% 。

<for from=”1″ to=”10000000″ var=”i”> 這就是使用者在 100% 的時間裡做的事情。它們迴圈遍歷 10,000,000 次並且 <request> 一個網頁:/test.txt 。

這個迴圈結構允許我們使用少量的使用者連線去獲取比較大的每秒請求數量。

一旦你已經很好地理解了它們,你就可以建立一個便利的別名,去快速觀察 Tsung 報告。

vim ~/.bashrc

aliastreport="/usr/lib/tsung/bin/tsung_stats.pl; firefox report.html"

source ~/.bashrc

然後啟動 Tsung

[root@loadnode1 ~] tsung start

Starting Tsung

"Log directory is:/root/.tsung/log/20120421-1004"

結束後觀察報告

cd /root/.tsung/log/20120421-1004

treport

測試報告

使用 Tsung 去規劃你的叢集構造

現在我們擁有了一個足夠強大的負載測試工具,我們可以規劃餘下的叢集構造了:

  1. 使用 Tsung 去測試一個單一的 HTTP 伺服器。獲取一個基本的基準。

  2. 對 web 伺服器進行調優,定期使用 Tsung 進行測試提高效能。

  3. 對這些系統的 TCP 套接字進行調優,獲取最佳的網路效能。再來一次,測試,測試,不停地測試。

  4. 構造 LVS 叢集,它包含了這些充分調優過的 web 伺服器。

  5. 使用 Tsung IP 叢集對 LVS 進行壓力測試。

你會了嗎?

相關推薦

知道什麼網站併發?如何測試這個必須瞭解瞭解

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

網站併發計算

你想建設一個能承受500萬PV/每天的網站嗎? 500萬PV是什麼概念?伺服器每秒要處理多少個請求才能應對?如果計算呢? PV是什麼: PV是page view的簡寫。PV是指頁面的訪問次數,每開啟或重新整理一次頁面,就算做一個pv。 計算模型:  每臺

網站併發的計算

你想建設一個能承受500萬PV/每天的網站嗎? 500萬PV是什麼概念?伺服器每秒要處理多少個請求才能應對?如果計算呢? PV是什麼: PV是page view的簡寫。PV是指頁面的訪問次數,每開啟或重新整理一次頁面,就算做一個pv。 計算模型:  每臺伺服器每秒處理請求的

PHP使用Apache中的ab(ApacheBench)測試網站併發

AB(ApacheBench) 是 Apache 自帶的超文字傳輸協議 (HTTP) 效能測試工具。 其設計意圖是描繪當前所安裝的 Apache 的執行效能, 主要是顯示 Apache 每秒可以處理多

怎樣建網站更快更省錢?這個優惠你一定要知道

免費自助建站 網站建設 怎麽建網站 講道理,凡科建站要放大招優惠促銷,這個時候不該歌舞升平把酒言歡原地托馬斯全旋式炸裂直沖雲霄與鞭炮齊鳴嗎?正經點,是時候讓大家出來解釋解釋這次凡科建站“勞動好時光”的主題優惠促銷活動。 一、成龍體 其實,第一次讓我參加凡

JMeter網站併發測試

原文:http://blog.csdn.net/zhang_ps/article/details/51345904 JMeter網站併發性測試 Apache JMeter是Apache組織開發的基於Java的壓力測試工具。用於對軟體做壓力測試,它

併發網站解決方案、效能優化

一個小型的網站,可以使用最簡單的html靜態頁面就實現了,配合一些圖片達到美化效果,所有的頁面均存放在一個目錄下,這樣的網站對系統架構、效能的要求都很簡單。隨著網際網路業務的不斷豐富,網站相關的技術經過這些年的發展,已經細分到很細的方方面面,尤其對於大型網站來說,所採用的技術更是涉及面非常廣,從硬體

系統吞吐量(TPS)、使用者併發、效能測試概念和公式【轉】

PS:下面是效能測試的主要概念和計算公式,記錄下: 原文傳送門 一.系統吞度量要素: 一個系統的吞度量(承壓能力)與request對CPU的消耗、外部介面、IO等等緊密關聯。 單個reqeust 對CPU消耗越高,外部系統介面、IO影響速度越慢,系統吞吐能力越低,反之越高。

web網站併發級別

web網站的併發量級別 評價一個網站的“大小”,處於視角的不同,有很多種衡量的方法,類似文章數,頁面數之類的資料非常明顯,也沒有什麼可以爭議的。但對於併發來說,爭議非常之多,這裡就從一個技術的角度開始,談談幾個Web網站的數量級。 相信很多人談論一個網站的熱度,總免不了會詢問日均PV,同時線上人數、註冊使

系統吞吐量(TPS)、使用者併發、效能測試概念和公式

系統的吞吐量與請求對CPU的消耗,伺服器記憶體使用,IO等都有關係。 系統吞吐量幾個重要引數:QPS(TPS)、併發數、響應時間 QPS(TPS):每秒處理的請求數 併發數:同時處理的請求數 響應時間:平均響應時間 三者的關係:QPS(TPS)=併發數/平均響應

系統吞吐量、TPS(QPS)、使用者併發、效能測試概念和公式

PS:下面是效能測試的主要概念和計算公式,記錄下: 一.系統吞度量要素:   一個系統的吞度量(承壓能力)與request對CPU的消耗、外部介面、IO等等緊密關聯。單個reqeust 對CPU消耗越高,外部系統介面、IO影響速度越慢,系統吞吐能力越低,反之越高。 系統

php + nginx+mysql 網站併發壓力測試

一、測試工具: Apache 壓力測試工具ab ab是針對apache的效能測試工具,非常容易使用,並且完全可以摸你各種條件對Web伺服器發起測試請求。ab可以直接在Web伺服器本地發起測試請求,這對於需要了解伺服器的處理效能至關重要,它不包括資料的網路傳輸

併發網站解決方案

一個小型的網站,可以使用最簡單的html靜態頁面就實現了,配合一些圖片達到美化效果,所有的頁面均存放在一個目錄下,這樣的網站對系統架構、效能的要求都很簡單。隨著網際網路業務的不斷豐富,網站相關的技術經過這些年的發展,已經細分到很細的方方面面,尤其對於大型網站來說,所採用的

大資料量、高併發網站解決方案

      一個小型的網站,可以使用最簡單的html靜態頁面就實現了,配合一些圖片達到美化效果,所有的頁面均存放在一個目錄下,這樣的網站對系統架構、效能的要求都很簡單。隨著網際網路業務的不斷豐富,網站相關的技術經過這些年的發展,已經細分到很細的方方面面,尤其對於大型網站來說

[乾貨]系統吞吐量(TPS)、使用者併發、效能測試概念和公式

在淘寶環境下,假設我們壓力測試出的TPS為100,那麼這個系統的日吞吐量=100*11*3600=396萬 這個是在簡單(單一url)的情況下,有些頁面,一個頁面有多個request,系統的實際吞吐量還要小 無論有無思考時間(T_think),測試所得的TPS值和

效能測試--系統吞吐量(TPS)、使用者併發、效能測試概念和公式

PS:下面是效能測試的主要概念和計算公式,記錄下: 一.系統吞度量要素:   一個系統的吞度量(承壓能力)與request對CPU的消耗、外部介面、IO等等緊密關聯。 單個reqeust 對CPU消耗越高,外部系統介面、IO影響速度越慢,系統吞吐能力越低,反之越高。 系統吞吐量幾個重要引數:QPS

php + nginx 網站併發壓力測試及優化

一、測試工具: Apache 壓力測試工具ab ab是針對apache的效能測試工具,可以只安裝ab工具。 ubuntu安裝ab apt-get install apache2-utils centos安裝ab yum install h

loadrunner測試併發並生成報告

錄入日誌 1、點選 2、填寫 url:選擇登入路徑(因為想要測試的專案設定了攔截器,不先登入,無法直接訪問) 錄製到操作:選擇了vuser_init,,,等訪問到了需要測試的模組,再改成action 錄製結束後的操作:選擇vuser_end,然後點

關於B2C網站併發的建議

根據官方微博透露出售的書籍資訊,及訂單數量級,我們可以再大膽猜測大概有30W-50W的網路使用者在三個小時促銷期內參與購買,而且是分二天完成的,相信一天的促銷時間段參與購買者的數字會更低一些,不過這對於一個B2C網站而言確實併發壓力不小,假設一臺Web伺服器能支撐5000

效能測試:深入理解執行緒數,併發,TPS,看這一篇就夠了

併發數,執行緒數,吞吐量,每秒事務數(TPS)都是效能測試領域非常關鍵的資料和指標。 那麼他們之間究竟是怎樣的一個對應關係和內在聯絡? 測試時,我們經常容易將執行緒數等同於表述為併發數,這一表述正確嗎? 本文就將對效能領域的這些關鍵概念做一次探討。 文章可能會比較長,希望您保持耐心看完。   1.