• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于Nginx的可擴(kuò)展負(fù)載均衡Web站點(diǎn)部署

      2014-03-17 01:08:42任世宗李潤知張茜王宗敏
      中國教育網(wǎng)絡(luò) 2014年8期
      關(guān)鍵詞:系統(tǒng)資源內(nèi)存利用率

      文/任世宗 李潤知 張茜 王宗敏

      基于Nginx的可擴(kuò)展負(fù)載均衡Web站點(diǎn)部署

      文/任世宗 李潤知 張茜 王宗敏

      隨著網(wǎng)絡(luò)服務(wù)的日趨完善,我們在獲得方便的同時(shí),也面臨著巨大的挑戰(zhàn):并發(fā)業(yè)務(wù)訪問數(shù)量的直線增長,是網(wǎng)絡(luò)中的Web服務(wù)器工作能力的嚴(yán)峻考驗(yàn)。

      采用多服務(wù)器集群技術(shù)是解決上述問題的有效方案,而負(fù)載均衡是集群技術(shù)的核心問題。負(fù)載均衡能夠?qū)⒋罅康牟l(fā)訪問請求合理地均分到集群內(nèi)的各服務(wù)器上進(jìn)行處理,有效地避免了單一服務(wù)器數(shù)據(jù)流過大的問題,同時(shí)能夠使各個(gè)服務(wù)器的資源得到均衡的使用。負(fù)載均衡包括硬件和軟件兩種類型,硬件的成本高昂,軟件的負(fù)載均衡配置部署靈活,越來越受到人們的親睞。

      Nginx是中小企業(yè)軟件負(fù)載均衡的不錯(cuò)選擇。Nginx支持高并發(fā),官方測試可支持5萬的并發(fā)連接。進(jìn)程消耗內(nèi)存少,每個(gè)Nginx進(jìn)程僅消耗十幾兆的內(nèi)存。Nginx作為開源軟件,成本低廉。另外,Nginx配置文件簡單,穩(wěn)定性高,且非常易于部署。但是Nginx也存在一些問題:它作為反向代理服務(wù)器時(shí),連接的后端物理Web應(yīng)用服務(wù)器(如Apache、IIS等)性能無法得到充分利用,不易于根據(jù)業(yè)務(wù)并發(fā)量動(dòng)態(tài)的調(diào)整后端服務(wù)器的數(shù)量,負(fù)載均衡的效果不是特別理想。

      本文提出了用Nginx反向代理虛擬機(jī)的方式實(shí)現(xiàn)Web站點(diǎn)的負(fù)載均衡,既充分的利用了CPU、內(nèi)存等硬件資源,又滿足了高并發(fā)的需求,并且具有非常好的擴(kuò)展性。

      Nginx的配置優(yōu)化

      如圖1所示,我們對服務(wù)A啟用A1、A2兩臺(tái)虛擬機(jī),部署到兩臺(tái)不同的物理機(jī)上,對服務(wù)B做類似的部署。這樣,既避免了由于物理機(jī)故障,導(dǎo)致服務(wù)中斷,又有效地利用了物理機(jī)的資源。

      在采用此種架構(gòu)的基礎(chǔ)上,我們對Nginx的主配置文件nginx.conf進(jìn)行一些優(yōu)化:

      user www www;

      #只開啟一個(gè)進(jìn)程,節(jié)省內(nèi)存

      work_processes 1;

      error_log /usr/local/nginx/nginx_error.log crit;

      pid /usr/local/nginx/nginx.pid;

      work_rlimit_nofile51200;

      events

      {

      use epoll;

      work_connections 51200; }

      http

      {

      include /user/local/nginx/mime.types; default_type application/octet-stream; #charset utf-8

      server_names_hash_bucket_size 128; client_header_buffer_size 32k;

      large_client_header_buffers 4 64k;

      #指定 nginx 是否調(diào)用 sendfile 函數(shù)(zero copy 方式)來輸出文件,對于普通應(yīng)用,

      必須設(shè)為 on,如果用來進(jìn)行下載等應(yīng)用磁盤

      IO重負(fù)載應(yīng)用,可設(shè)置為 off,以平衡磁盤與網(wǎng)絡(luò)I/O處理速度,降低系統(tǒng)的uptime

      sendfile on;

      #tcp_nopush和tcp_nodely兩個(gè)指令設(shè)置為on,用于防止網(wǎng)絡(luò)阻塞

      tcp_nopush on tcp_nodelay on; keepalive_timeout 65;

      #對網(wǎng)頁文件、CSS、JS、XML等啟動(dòng)gzip壓縮,減少數(shù)據(jù)傳輸量,提高訪問速度。

      gzip on;

      gzip_min_length 1k; gzip_buffers 4 8k;

      gzip_http_version 1.1; gzip_comp_level 3;

      gzip_typestext/plain application/x-javascripts test/ css application/xml;

      gzip_vary on;

      #設(shè)定負(fù)載均衡服務(wù)器列表,采用ip hash的方式進(jìn)行負(fù)載均衡,使來自同一個(gè)ip的訪客固定訪問一個(gè)后端服務(wù)器,有效解決session共享問題。

      upstream myserver {

      ip_hash;

      server 192.168.100.1∶80 weight=5 max_fails=2 fail_ timeout=30s;

      server 192.168.100.2∶80 weight=5 max_fails=2 fail_ timeout=30s;

      }

      server

      {

      listen80;

      server_namewww.youdomain.com;

      root www/myserver

      location/

      {

      proxy_next_upstream http_502 http_504 error timeout invalid_header;

      proxy_pass http∶//myserver;

      proxy_set_header Host www.youdomain.com;

      proxy_set_header X-Forward-For $remote_addr; }

      #將動(dòng)態(tài)的頁面交給后端的Web服務(wù)器群組處理。

      location ~ .*.(php|jsp|cgi)?$

      {

      proxy_set_header Host www.youdomain.com;

      proxy_set_header X-Forward-For $remote_addr; proxy_pass http∶//myserver;

      #將動(dòng)靜頁面進(jìn)行分離,定義靜態(tài)資源由Nginx發(fā)布目錄讀取。

      location ~ .*.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|j s|css)$

      {

      root /www/myserver;

      # 圖片、靜態(tài)頁等不常更改,設(shè)置它們在用戶瀏覽器的本地緩存為3天,提高訪問速度

      圖1 實(shí)現(xiàn)Web站點(diǎn)的負(fù)載均衡

      expires 3d;

      access_log /logs/www.youdomain.com_access.log; }足這種動(dòng)態(tài)的業(yè)務(wù)需求,隨時(shí)的增加、減少虛擬機(jī),非常方便。

      架構(gòu)的優(yōu)點(diǎn)

      1.利用Nginx進(jìn)行動(dòng)靜分離,充分發(fā)揮Nginx處理靜態(tài)頁的優(yōu)勢,有效減輕后端虛擬機(jī)的負(fù)載。

      2.通過ip hash實(shí)現(xiàn)后端虛擬機(jī)的負(fù)載均衡,保證來自同一ip的訪問請求定位在一個(gè)虛擬機(jī)上,有效解決session共享問題。

      3.通過gzip壓縮、用戶瀏覽器緩存等的設(shè)置,節(jié)省帶寬,提高訪問速度。

      4.傳統(tǒng)的IIS、Apache服務(wù)器等在并發(fā)連接高的時(shí)候,很容易崩潰。利用本文提出的架構(gòu)可以有效地將并發(fā)連接均分到多個(gè)虛擬機(jī),這樣每個(gè)虛擬機(jī)的并發(fā)連接數(shù)在相對較低的情況下,減小了崩潰的可能性。

      5.軟件依賴于硬件,因此計(jì)算機(jī)硬件的更新速度始終快于軟件。考慮到IIS、Apache等的并發(fā)瓶頸問題,如果我們的服務(wù)器僅僅作為一個(gè)Web服務(wù)器的話,其性能很難得到充分的發(fā)揮,資源利用率并不高。采用虛擬機(jī)的方式可以充分的利用系統(tǒng)資源,借助于Nginx最為反向代理,在低成本投入的前提下,實(shí)現(xiàn)高并發(fā)、高性能的Web服務(wù)。

      6.隨著企業(yè)業(yè)務(wù)的發(fā)展,用戶的數(shù)量可能會(huì)不斷增加;另外,某些企業(yè)也可能在不同的時(shí)間段內(nèi)有差別很大的訪問量。用Nginx反向代理虛擬機(jī)的形式可以很好的滿

      測試分析

      工具介紹

      本次測試采用的軟件是LoadRunner。

      LoadRunner是一種適用于各種體系架構(gòu)的自動(dòng)化負(fù)載測試工具,它通過模擬大量實(shí)際用戶的操作行為,對被測試系統(tǒng)實(shí)施并發(fā)負(fù)載測試,同時(shí)對被測試的系統(tǒng)進(jìn)行實(shí)時(shí)的性能監(jiān)測,并自動(dòng)整理生成測試結(jié)果,以便于找出性能的瓶頸。它主要由六部分組成:

      1.虛擬用戶生成器(Vugen):追蹤業(yè)務(wù)和生成測試腳本

      2.壓力生成器:模擬真實(shí)用戶產(chǎn)生負(fù)載。

      3.用戶代理:調(diào)整整個(gè)虛擬用戶,使步調(diào)一致。

      4.壓力調(diào)度:跟蹤用戶需求,改變虛擬用戶數(shù)量。

      5.監(jiān)控系統(tǒng):監(jiān)控性能指標(biāo)。

      6.測試結(jié)果分析器:生成各種分析圖表,用于分析瓶頸。

      性能指標(biāo)

      本次測試主要選取了并發(fā)用戶、響應(yīng)時(shí)間、系統(tǒng)資源利用率三個(gè)比較具有代表性的參數(shù)進(jìn)行記錄分析。

      1.并發(fā)用戶

      指所有用戶在同一時(shí)刻做同一事情或操作,這種操作一般針對通一類型的業(yè)務(wù);或者所有用戶進(jìn)行完全一樣的操作,目的是測試程序?qū)Σl(fā)操作的處理。

      2.響應(yīng)時(shí)間

      響應(yīng)時(shí)間是從用戶的角度分析的時(shí)間延遲,單位為毫秒或秒。作為最終用戶來說,評價(jià)系統(tǒng)性能的好壞只能根據(jù)感覺時(shí)間的快慢,他不關(guān)心并發(fā)訪問系統(tǒng)的人數(shù)等其他因素。Web應(yīng)用系統(tǒng)的性能,可以認(rèn)為是系統(tǒng)的平均響應(yīng)時(shí)間。通常情況下,系統(tǒng)負(fù)載能力越大,響應(yīng)時(shí)間越短。訪問的用戶數(shù)越大,響應(yīng)時(shí)間越長。

      3.資源利用率

      資源利用率是只對不同系統(tǒng)資源的使用程度,是測試和分析瓶頸,改善系統(tǒng)性能的主要依據(jù)。

      測試結(jié)果及分析

      圖2

      圖3

      圖4

      圖5

      圖6

      圖7

      圖8

      本次測試的對象是某高校的研究生院網(wǎng)站,它的邏輯并不復(fù)雜,但在每年的招生期間有很高的并發(fā)量。首先,單臺(tái)物理機(jī)下進(jìn)行測試;然后,搭建Nginx反向代理服務(wù)器,再次進(jìn)行測試;最后,對Nginx進(jìn)行優(yōu)化后的測試。

      三次測試的過程中均錄制統(tǒng)一的腳本,設(shè)置初始用戶100,每次增加50的并發(fā)用戶。

      1.單臺(tái)物理機(jī)搭建LLS服務(wù)器性能測試

      測試環(huán)境:Xeon 4核處理器+4G內(nèi)存+Windows Server 2003+IIS6.0

      測試分析:

      (1)并發(fā)用戶

      當(dāng)并發(fā)用戶到達(dá)200的時(shí)候開始出現(xiàn)錯(cuò)誤,隨著虛擬用戶的繼續(xù)增長,大部分訪問請求都不能pass,打開瀏覽器發(fā)現(xiàn)網(wǎng)站頁面打不開,如圖2所示。

      (2)系統(tǒng)平均響應(yīng)時(shí)間

      我們發(fā)現(xiàn)隨著并發(fā)訪問數(shù)量的增加,系統(tǒng)的響應(yīng)時(shí)間直線增長,系統(tǒng)的平均響應(yīng)時(shí)間很高,最高超過100秒,如圖3所示。

      (3)系統(tǒng)資源

      我們可以看到隨著虛擬用戶的增長,CPU資源的占用率沒有明顯增長的趨勢,內(nèi)存空閑資源僅稍有減少,如圖4所示。

      通過對結(jié)果的分析,我們看到,LLS服務(wù)器在虛擬用戶數(shù)達(dá)到將近200的時(shí)候開始出錯(cuò),300的時(shí)候已經(jīng)崩潰,而系統(tǒng)的資源利用率實(shí)際上并不高。

      2.利用Nginx反向代理虛擬機(jī)時(shí)的性能測試

      測試環(huán)境:2臺(tái)單核2G的虛擬機(jī)(Windows Server 2003+IIS6.0)+雙核4G的Nginx物理機(jī)。

      測試分析:

      (1)并發(fā)用戶

      當(dāng)并發(fā)用戶到達(dá)550的時(shí)候開始出現(xiàn)錯(cuò)誤,部分訪問請求不能pass,打開瀏覽器發(fā)現(xiàn)網(wǎng)站頁面打開極慢,如圖5所示。

      (2)系統(tǒng)平均響應(yīng)時(shí)間

      我們看到,使用Nginx進(jìn)行反向代理之后,系統(tǒng)的響應(yīng)時(shí)間有所降低,最高50秒左右,但是還是很高,可能與測試環(huán)境有關(guān),如圖6所示。

      (3)系統(tǒng)資源

      Loadrunner只能監(jiān)測到Nginx服務(wù)器的系統(tǒng)資源,我們在測試的過程中通過登錄IIS服務(wù)器發(fā)現(xiàn)CPU資源利用率在平均約45%,內(nèi)存利用率平均約50%,都沒有隨并發(fā)連接數(shù)急劇增長的現(xiàn)象。

      通過對結(jié)果的分析,我們看到,通過Nginx反向代理IIS虛擬機(jī),有效的提升了網(wǎng)站并發(fā)訪問的負(fù)載能力,IIS虛擬機(jī)的資源利用率比單個(gè)物理機(jī)時(shí)更充分。

      3.對Nginx進(jìn)行優(yōu)化后的性能測試

      測試環(huán)境:2臺(tái)單核2G的虛擬機(jī)(Windows Server 2003+IIS6.0)+雙核4G的Nginx物理機(jī)(優(yōu)化后的)。

      測試分析:

      (1)并發(fā)用戶

      我們發(fā)現(xiàn),經(jīng)過對Nginx的優(yōu)化,當(dāng)并發(fā)用戶到達(dá)650的時(shí)候才開始出現(xiàn)第一個(gè)錯(cuò)誤,隨著虛擬用戶的增加,錯(cuò)誤數(shù)量的增加不是太快,打開瀏覽器發(fā)現(xiàn)網(wǎng)站頁面還能打開,只是訪問速度慢,說明Nginx服務(wù)器和IIS服務(wù)器均沒有崩潰,如圖7所示。

      (2)系統(tǒng)平均響應(yīng)時(shí)間

      從圖表中我們看到,響應(yīng)時(shí)間和對Nginx進(jìn)行優(yōu)化前對比有顯著減少,平均在12秒左右,最高24秒,如圖8所示。

      (3)系統(tǒng)資源

      同樣通過直接登錄查看IIS虛擬機(jī)的系統(tǒng)資源,發(fā)現(xiàn)CPU利用率平均約45%,內(nèi)存利用率平均約50%,跟優(yōu)化前沒有明顯區(qū)別。

      通過對結(jié)果的分析,我們看到,對Nginx的合理優(yōu)化有效的增加了并發(fā)訪問量,減少了系統(tǒng)響應(yīng)時(shí)間,進(jìn)一步提高了Web服務(wù)的性能,系統(tǒng)資源的利用率保持不變。

      Nginx是一款不錯(cuò)的反向代理軟件,利用Nginx反向代理虛擬機(jī)的架構(gòu)可以有效避免IIS、Apache的并發(fā)瓶頸問題,并且增加了網(wǎng)站的可擴(kuò)展性。通過對高校網(wǎng)站的壓力測試,證實(shí)了Nginx反向代理虛擬機(jī)架構(gòu)的可用性,同時(shí)發(fā)現(xiàn)了網(wǎng)站的瓶頸所在??偟膩碚f,Web應(yīng)用的性能是受多方面影響的,不能一味去增加硬件設(shè)備,要通過實(shí)際的測試,找出瓶頸所在,多從優(yōu)化架構(gòu)、優(yōu)化參數(shù)配置入手,從而提高性能,提高Web服務(wù)的質(zhì)量。

      (作者單位為鄭州大學(xué)信息網(wǎng)絡(luò)重點(diǎn)開放實(shí)驗(yàn)室)

      猜你喜歡
      系統(tǒng)資源內(nèi)存利用率
      民用飛機(jī)綜合模塊化航電系統(tǒng)資源狀態(tài)監(jiān)控技術(shù)研究
      “春夏秋冬”的內(nèi)存
      化肥利用率穩(wěn)步增長
      做好農(nóng)村土地流轉(zhuǎn) 提高土地利用率
      淺議如何提高涉煙信息的利用率
      板材利用率提高之研究
      基于內(nèi)存的地理信息訪問技術(shù)
      VMware虛擬機(jī)技術(shù)在Linux教學(xué)中的應(yīng)用
      讓Microsoft Securuty Essentials輕裝前進(jìn)
      電腦迷(2012年2期)2012-04-29 13:52:27
      上網(wǎng)本為什么只有1GB?
      泸州市| 兴和县| 青河县| 东台市| 天津市| 桂林市| 尼勒克县| 张家界市| 健康| 上饶县| 广州市| 德清县| 西藏| 宝清县| 嘉鱼县| 香港| 晴隆县| 霍山县| 固镇县| 吉水县| 阳西县| 博客| 牙克石市| 襄垣县| 康平县| 鄂托克前旗| 汉寿县| 武汉市| 社旗县| 改则县| 江油市| 玉林市| 延边| 德格县| 靖西县| 上林县| 乌鲁木齐县| 大余县| 隆尧县| 理塘县| 宁夏|