發(fā)布時(shí)間:2020-08-06 作者:未知
網(wǎng)站流量大ip并發(fā)高怎么辦
所謂服務(wù)器大流量高并發(fā)是指:在同一時(shí)間或很短的時(shí)間內(nèi),大量的請(qǐng)求到達(dá)服務(wù)器,每個(gè)請(qǐng)求都需要服務(wù)器消耗資源進(jìn)行處理并做出相應(yīng)的反饋。
如何處理高并發(fā)性問(wèn)題
從服務(wù)器的角度來(lái)看,高并發(fā)性:服務(wù)器在處理請(qǐng)求時(shí)需要消耗服務(wù)器的資源,比如可以同時(shí)啟動(dòng)的進(jìn)程數(shù),可以同時(shí)運(yùn)行的線程數(shù),網(wǎng)絡(luò)連接數(shù),CPU,I/O,內(nèi)存,由于服務(wù)器的資源有限,服務(wù)器可以同時(shí)處理的請(qǐng)求也受到限制。
高并發(fā)帶來(lái)的問(wèn)題:高并發(fā)問(wèn)題的本質(zhì)是資源的限制。因此,當(dāng)出現(xiàn)高并發(fā)時(shí),服務(wù)器的處理和響應(yīng)將變得越來(lái)越慢,甚至部分請(qǐng)求將被丟棄而不被處理。更嚴(yán)重的是,服務(wù)器將崩潰。
高并發(fā)處理的一般思想和方法
高并發(fā)處理的基本思想
1) 從客戶(hù)端來(lái)說(shuō),我們應(yīng)該盡量減少請(qǐng)求的數(shù)量,比如根據(jù)客戶(hù)端自身的緩存或者處理能力;我們應(yīng)該盡量減少對(duì)服務(wù)器端資源的不必要的消耗,比如重用一些資源,比如連接池。客戶(hù)端處理的基本原則是:如果無(wú)法訪問(wèn)服務(wù)器,請(qǐng)不要訪問(wèn)它。
2)從服務(wù)器端,增加資源供給,如更大的網(wǎng)絡(luò)帶寬、更高配置的服務(wù)器、高性能的web服務(wù)器、高性能的數(shù)據(jù)庫(kù);請(qǐng)求分流,如集群和分布式體系結(jié)構(gòu);應(yīng)用優(yōu)化,如采用更高效的編程語(yǔ)言?xún)?yōu)化算法處理業(yè)務(wù)邏輯,優(yōu)化SQL對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)。簡(jiǎn)言之,基本原則是分而治之,提高單個(gè)請(qǐng)求的處理速度。
高并發(fā)處理的基本方法
1) 在請(qǐng)求級(jí),常用的手段有:盡量充分利用瀏覽器的緩存功能,減少對(duì)服務(wù)器的訪問(wèn),如JS、CSS、圖片等;考慮使用壓縮傳輸功能,減少網(wǎng)絡(luò)流量,提高傳輸速度;考慮采用異步請(qǐng)求獲取數(shù)據(jù)分批。
2) 前端接收客戶(hù)端請(qǐng)求的常用方法有:靜態(tài)和動(dòng)態(tài)分離,部分靜態(tài)資源可以直接從nginx返回;根據(jù)不同的請(qǐng)求,分配到不同的后端進(jìn)行處理,如負(fù)載均衡、業(yè)務(wù)拆分訪問(wèn)等。;增加一層來(lái)平衡多個(gè)nginx的負(fù)載,如LVS、F5等;前端也可以使用CDN服務(wù);可以緩存動(dòng)態(tài)內(nèi)容,以減少對(duì)后端服務(wù)的訪問(wèn)。
3) 在web服務(wù)器級(jí)別,常用的方法包括:使用最新的JVM并優(yōu)化配置;優(yōu)化web服務(wù)器的配置,如調(diào)整內(nèi)存和線程的數(shù)量;提供多個(gè)可以提供相同服務(wù)的web服務(wù)器來(lái)實(shí)現(xiàn)負(fù)載平衡;仔細(xì)規(guī)劃部署在上的應(yīng)用程序規(guī)模web服務(wù)器;群集web服務(wù)器。
4) 在web應(yīng)用層,常用的手段有:靜態(tài)動(dòng)態(tài)內(nèi)容、java開(kāi)發(fā)優(yōu)化、業(yè)務(wù)邏輯算法優(yōu)化、緩存的合理高效使用;優(yōu)化數(shù)據(jù)庫(kù)SQL訪問(wèn),可以考慮使用存儲(chǔ)過(guò)程等數(shù)據(jù)庫(kù)功能;合理使用多線程技術(shù),加快業(yè)務(wù)處理速度;部分業(yè)務(wù)可以考慮內(nèi)存數(shù)據(jù)庫(kù)或純內(nèi)存處理;盡量避免遠(yuǎn)程調(diào)用和大量I/O等耗時(shí)操作;合理規(guī)劃事務(wù)等資源消耗操作;合理使用異步處理;考慮對(duì)部分業(yè)務(wù)采用預(yù)處理或預(yù)計(jì)算,減少實(shí)時(shí)計(jì)算;盡量在內(nèi)部系統(tǒng)間直接調(diào)用和處理業(yè)務(wù),減少WebService和工作流。
5)在數(shù)據(jù)庫(kù)級(jí),常用的手段有:合理選擇數(shù)據(jù)庫(kù)引擎,如MySQL InnoDB和MyISAM引擎;配置優(yōu)化;考慮使用存儲(chǔ)過(guò)程處理復(fù)雜的數(shù)據(jù)邏輯;數(shù)據(jù)庫(kù)集群、讀寫(xiě)分離;合理設(shè)計(jì)數(shù)據(jù)庫(kù)表結(jié)構(gòu)、索引等;子數(shù)據(jù)庫(kù)、子數(shù)據(jù)庫(kù)表,減少單個(gè)數(shù)據(jù)庫(kù)和單個(gè)表中的數(shù)據(jù)量。
騰佑科技,十幾年的老牌idc服務(wù)商,提供服務(wù)器租用,服務(wù)器托管,云服務(wù)器等等,了解更多服務(wù)器的配置和報(bào)價(jià),詳情咨詢(xún)我們,為您優(yōu)惠多多。