国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

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

2014-03-17 01:08任世宗李潤(rùn)知張茜王宗敏
中國(guó)教育網(wǎng)絡(luò) 2014年8期
關(guān)鍵詞:內(nèi)存利用率代理

文/任世宗 李潤(rùn)知 張茜 王宗敏

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

文/任世宗 李潤(rùn)知 張茜 王宗敏

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

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

Nginx是中小企業(yè)軟件負(fù)載均衡的不錯(cuò)選擇。Nginx支持高并發(fā),官方測(cè)試可支持5萬的并發(fā)連接。進(jìn)程消耗內(nèi)存少,每個(gè)Nginx進(jìn)程僅消耗十幾兆的內(nèi)存。Nginx作為開源軟件,成本低廉。另外,Nginx配置文件簡(jiǎn)單,穩(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所示,我們對(duì)服務(wù)A啟用A1、A2兩臺(tái)虛擬機(jī),部署到兩臺(tái)不同的物理機(jī)上,對(duì)服務(wù)B做類似的部署。這樣,既避免了由于物理機(jī)故障,導(dǎo)致服務(wù)中斷,又有效地利用了物理機(jī)的資源。

在采用此種架構(gòu)的基礎(chǔ)上,我們對(duì)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 方式)來輸出文件,對(duì)于普通應(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;

#對(duì)網(wǎng)頁(yè)文件、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)的頁(yè)面交給后端的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)靜頁(yè)面進(jìn)行分離,定義靜態(tài)資源由Nginx發(fā)布目錄讀取。

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

{

root /www/myserver;

# 圖片、靜態(tài)頁(yè)等不常更改,設(shè)置它們?cè)谟脩魹g覽器的本地緩存為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è)的優(yōu)勢(shì),有效減輕后端虛擬機(jī)的負(fù)載。

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

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

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

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ī)的形式可以很好的滿

測(cè)試分析

工具介紹

本次測(cè)試采用的軟件是LoadRunner。

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

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

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.測(cè)試結(jié)果分析器:生成各種分析圖表,用于分析瓶頸。

性能指標(biāo)

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

1.并發(fā)用戶

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

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

響應(yīng)時(shí)間是從用戶的角度分析的時(shí)間延遲,單位為毫秒或秒。作為最終用戶來說,評(píng)價(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í)間越長(zhǎng)。

3.資源利用率

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

測(cè)試結(jié)果及分析

圖2

圖3

圖4

圖5

圖6

圖7

圖8

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

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

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

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

測(cè)試分析:

(1)并發(fā)用戶

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

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

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

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

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

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

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

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

測(cè)試分析:

(1)并發(fā)用戶

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

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

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

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

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

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

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

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

測(cè)試分析:

(1)并發(fā)用戶

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

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

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

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

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

通過對(duì)結(jié)果的分析,我們看到,對(duì)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ò)展性。通過對(duì)高校網(wǎng)站的壓力測(cè)試,證實(shí)了Nginx反向代理虛擬機(jī)架構(gòu)的可用性,同時(shí)發(fā)現(xiàn)了網(wǎng)站的瓶頸所在??偟膩碚f,Web應(yīng)用的性能是受多方面影響的,不能一味去增加硬件設(shè)備,要通過實(shí)際的測(cè)試,找出瓶頸所在,多從優(yōu)化架構(gòu)、優(yōu)化參數(shù)配置入手,從而提高性能,提高Web服務(wù)的質(zhì)量。

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

猜你喜歡
內(nèi)存利用率代理
2020年煤炭采選業(yè)產(chǎn)能利用率為69.8% 同比下降0.8%
2019年全國(guó)煤炭開采和洗選業(yè)產(chǎn)能利用率為70.6%
筆記本內(nèi)存已經(jīng)在漲價(jià)了,但幅度不大,升級(jí)擴(kuò)容無須等待
“春夏秋冬”的內(nèi)存
化肥利用率穩(wěn)步增長(zhǎng)
代理圣誕老人
淺議如何提高涉煙信息的利用率
內(nèi)存搭配DDR4、DDR3L還是DDR3?
108名特困生有了“代理媽媽”
勝似媽媽的代理家長(zhǎng)