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

?

基于Nginx的Web服務(wù)器優(yōu)化的應(yīng)用研究

2021-04-07 10:51李若蘭
科技風(fēng) 2021年9期
關(guān)鍵詞:性能優(yōu)化

摘 要:隨著互聯(lián)網(wǎng)的快速發(fā)展,人們對(duì)網(wǎng)站的訪問量也隨著日益增長(zhǎng),越來越多的Web服務(wù)器經(jīng)常處于高并發(fā)訪問狀態(tài),導(dǎo)致服務(wù)器性能快速下降,甚至系統(tǒng)崩潰的嚴(yán)重后果。如何在硬件資源允許的前提下,通過軟件的配置支持高并發(fā)訪問成為了當(dāng)前亟待解決的重要課題。本文嘗試使用Nginx搭建Web服務(wù)器并對(duì)Nginx的連接數(shù)和客戶訪問限制方面進(jìn)行優(yōu)化測(cè)試研究,對(duì)幫助和改善Web服務(wù)器的高并發(fā)性能起到一定的積極作用。

關(guān)鍵詞:Web服務(wù)器;Nginx;性能優(yōu)化

隨著互聯(lián)網(wǎng)的快速發(fā)展,人們對(duì)網(wǎng)站的訪問量也隨著日益增長(zhǎng),越來越多的Web服務(wù)器經(jīng)常處于高并發(fā)訪問狀態(tài),導(dǎo)致服務(wù)器性能快速下降,甚至?xí)斐烧麄€(gè)服務(wù)器系統(tǒng)崩潰的嚴(yán)重后果。如何在硬件資源允許的前提下,通過軟件的配置使Web服務(wù)器支持高并發(fā)訪問成為了當(dāng)前亟待解決的重要課題。

近幾年來Nginx因?yàn)榫哂休p量級(jí)和高并發(fā)的特點(diǎn),國(guó)內(nèi)如百度、淘寶、騰訊、新浪和網(wǎng)易等網(wǎng)站都開始使用Nginx來滿足一些高并發(fā)訪問的需求[1]。

本文嘗試使用Nginx搭建Web服務(wù)器,并對(duì)Nginx在提高客戶端連接數(shù)、客戶請(qǐng)求數(shù)限制和瀏覽器緩存等方面優(yōu)化測(cè)試進(jìn)行應(yīng)用研究。

1 測(cè)試環(huán)境準(zhǔn)備

1.1 搭建Web系統(tǒng)

測(cè)試環(huán)境使用VMware部署兩臺(tái)安裝CentOS7操作系統(tǒng)的虛擬機(jī),作為Web系統(tǒng)的服務(wù)器端和客戶端。在完成兩臺(tái)Linux虛擬機(jī)的IP地址分配任務(wù)后,在Linux虛擬機(jī)1安裝Nginx,在Linux虛擬機(jī)2安裝Apache,即Linux虛擬機(jī)1通過運(yùn)行Nginx充當(dāng)Web服務(wù)器,Linux虛擬機(jī)2作為客戶端,測(cè)試環(huán)境如圖1所示。

1.2 服務(wù)器端創(chuàng)建測(cè)試網(wǎng)站

在Web服務(wù)器創(chuàng)建一個(gè)測(cè)試網(wǎng)站,客戶端使用域名方式訪問該測(cè)試網(wǎng)站。

(1)在服務(wù)器端的nginx.conf文件中http塊內(nèi)添加一個(gè)使用www.ng.test域名的虛擬主機(jī);

(2)在客戶端添加一條域名解析記錄(192.168.100.1www.ng.test);

(3)在客戶端的瀏覽器使用域名方式訪問網(wǎng)站。

2 使用Nginx優(yōu)化Web服務(wù)器

Nginx的默認(rèn)設(shè)置是為了平衡Web服務(wù)器的各種工作場(chǎng)景而準(zhǔn)備的通用方案,在特定工作中并不一定能發(fā)揮最佳的性能。本文對(duì)客戶端訪問Web服務(wù)器的連接數(shù)、客戶端請(qǐng)求限制等方面進(jìn)行性能調(diào)優(yōu)測(cè)試,即驗(yàn)證了Nginx的高并發(fā)的特點(diǎn),又能改善Web服務(wù)器性能[1]。

2.1 Nginx的連接數(shù)優(yōu)化測(cè)試

2.1.1 修改Linux系統(tǒng)的連接數(shù)限制

因?yàn)長(zhǎng)inux系統(tǒng)把進(jìn)程的連接數(shù)當(dāng)作文件處理,一個(gè)進(jìn)程的連接數(shù)不能超過1024[1]。如果要使客戶端和服務(wù)器端支持高并發(fā)連接數(shù),必須修改進(jìn)程數(shù)量的限制,具體命令如下:

[root@client~]#ulimit-n 65535

2.1.2 修改Nginx的連接數(shù)限制

Nginx運(yùn)行時(shí)允許存在多個(gè)工作進(jìn)程,工作進(jìn)程的數(shù)目可以在nginx.conf文件中指定,通常設(shè)置為CPU的核心數(shù)[2]。為了使Nginx能夠承載更高的連接數(shù),需要修改nginx.conf文件中與連接數(shù)限制相關(guān)的參數(shù)。具體命令如下:

http {

……

worker_processes auto;

worker_rlimit_nofile 65535;

……

events {

worker_connections 65535;

multi_accept on;

}

……

}

說明:worker_processes指令用于指定工作進(jìn)程的個(gè)數(shù),設(shè)置為auto時(shí)Nginx將根據(jù)CPU的核心數(shù)來控制;worker_rlimit_nofile用于設(shè)置最多打開的文件數(shù)量;worker_connections用于設(shè)置每個(gè)工作進(jìn)程可接收的連接數(shù);multi_accept表示是否允許一個(gè)工作進(jìn)程響應(yīng)多個(gè)請(qǐng)求。

2.1.3 客戶端高并發(fā)訪問服務(wù)器端測(cè)試

在客戶端使用Apache的ApacheBench工具向服務(wù)器端發(fā)送并發(fā)連接數(shù)是5000的訪問請(qǐng)求,具體命令如下:

[root@client~]#cd/usr/local/apache2/bin

[root@client bin]#./ab-n5000-c5000 http://www.ng.test/

說明:ab命令的選項(xiàng)-n表示發(fā)送的連接數(shù),-c表示并發(fā)數(shù),http://www.ng.test/表示請(qǐng)求的服務(wù)器URL地址。

測(cè)試結(jié)果出現(xiàn)如下信息:

Complete requests: 5000

Failed requests: 0

從測(cè)試結(jié)果顯示可以看出Nginx成功接收5000的并發(fā)連接請(qǐng)求。

2.2 客戶端請(qǐng)求限制測(cè)試

以上客戶端對(duì)服務(wù)器的高并發(fā)連接測(cè)試是通過同一個(gè)主機(jī)向服務(wù)器發(fā)送的高并發(fā)連接請(qǐng)求,在實(shí)際應(yīng)用中如果出現(xiàn)這種情況,這很可能是遭受網(wǎng)絡(luò)攻擊,會(huì)消耗服務(wù)器大量的資源。為了避免這種危險(xiǎn)情況的出現(xiàn),Nginx可以對(duì)來自同一IP地址的客戶端請(qǐng)求數(shù)和傳輸速率進(jìn)行限制。

2.2.1 限制同一個(gè)IP的請(qǐng)求數(shù)

服務(wù)器端通過nginx.conf文件的limit_req指令可以限制來自單個(gè)IP地址的請(qǐng)求處理頻率,具體配置如下:

http {

……

limit_req_zone $binary_remote_addr zone=creq:10m rate=1r/s;

server {

listen 80;

server_name localhost;

location /{

root html/test;

index index.html;

limit_req zone=creq burst=1;

}

}

……

}

說明:limit_req_zone指令用于開辟一個(gè)共享內(nèi)存空間保存客戶端IP,空間名稱為creq,空間大小為10M;預(yù)定義變量$binary_remote_addr保存了用二進(jìn)制表示的當(dāng)前客戶端IP地址;limit_req指令用于限制請(qǐng)求數(shù)量。

在客戶端使用ApacheBench工具進(jìn)行并發(fā)測(cè)試,測(cè)試結(jié)果看到100個(gè)請(qǐng)求中有98個(gè)是失敗的。

[root@client bin]#./ab-n100-c100 http://www.ng.test/

Complete requests:100

Failed requests: 98

2.2.2 限制響應(yīng)的傳輸速率

服務(wù)器端通過nginx.conf文件的limit_rate指令可以限制服務(wù)器在響應(yīng)時(shí)傳輸數(shù)據(jù)到客戶端的速率,具體配置如下:

http {

……

server {

……

limit_rate 100k;

……

}

}

說明:limit_rate用于限制每個(gè)連接的傳輸速率。

為了測(cè)試限速是否生效,在測(cè)試網(wǎng)站根目錄下放置一個(gè)大容量的測(cè)試文件,在客戶端使用wget命令下載,具體操作如下:

[root@client~]# wget http://www.ng.test/libmcrypt-2.5.8.tar.gz

……

100%[============================>]1,335,178 100KB/s in 13s

……

從測(cè)試結(jié)果看出下載速度基本維持在100KB/s左右。

通過以上對(duì)Nginx做連接數(shù)和客戶訪問限制方面進(jìn)行優(yōu)化測(cè)試分析,對(duì)幫助和改善Web服務(wù)器的高并發(fā)性能起到一定的積極作用。

參考文獻(xiàn):

[1]黑馬程序員Nginx高性能Web服務(wù)器實(shí)戰(zhàn)教程.清華大學(xué)出版社,2017.

[2]岳晉,溫宇,黃旻亮.Windows環(huán)境下的Nginx高并發(fā)實(shí)現(xiàn).電子技術(shù)與軟件工程,2019(17):47.

作者簡(jiǎn)介:李若蘭(1977— ),女,壯族,廣西來賓人,柳州鐵道職業(yè)技術(shù)學(xué)院專任教師,講師,主要研究方向:計(jì)算機(jī)網(wǎng)絡(luò)、數(shù)據(jù)存儲(chǔ)、云計(jì)算技術(shù)與應(yīng)用等。

猜你喜歡
性能優(yōu)化
大數(shù)據(jù)環(huán)境下高校選課系統(tǒng)性能優(yōu)化應(yīng)用研究
數(shù)據(jù)挖掘算法性能優(yōu)化的研究與應(yīng)用
SQL Server數(shù)據(jù)庫(kù)性能優(yōu)化的幾點(diǎn)分析
Web應(yīng)用的前端性能優(yōu)化
WEB網(wǎng)站緩存性能優(yōu)化
Oracle數(shù)據(jù)庫(kù)性能調(diào)整與優(yōu)化分析
基于節(jié)點(diǎn)緩存的Web服務(wù)器性能優(yōu)化研究
基于SQL數(shù)據(jù)庫(kù)的性能優(yōu)化的探討
Oracle數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的性能優(yōu)化