本站(zhàn)即日(rì)啓用新域名www.zlwl.vip

正雷網絡技術(shù)工(gōng)作(zuò)室

ARTICLE文章(zhāng)資訊

網站(zhàn)那些事(shì)兒?
Web Things...?

服務器大(dà)流量、高并發該怎麽處理(lǐ)?

所謂服務器大(dà)流量高并發指的是:在同時或極短(duǎn)時間内,有大(dà)量的請(qǐng)求到達服務端,每個請(qǐng)求都(dōu)需要服務端耗費資源進行處理(lǐ),并做出相(xiàng)應的反饋。

如(rú)何看(kàn)待高并發問(wèn)題

從(cóng)服務端視角看(kàn)高并發: 服務端處理(lǐ)請(qǐng)求需要耗費服務端的資源,比如(rú)能同時開啓的進程數、能同時運行的線程數、網絡連接數、cpu、I/O、内存等等,由于服務端資源是有限的,那麽服務端能同時處理(lǐ)的請(qǐng)求也是有限的。

高并發帶來(lái)的問(wèn)題: 高并發問(wèn)題的本質就(jiù)是:資源的有限性。因此,當高并發出現時,服務端的處理(lǐ)和響應會越來(lái)越慢(màn),甚至會丢棄部分(fēn)請(qǐng)求不予處理(lǐ),更嚴重的會導緻服務端崩潰。

常用的高并發處理(lǐ)的思路(lù)與手段

  • 高并發處理(lǐ)的基本思路(lù)

1)從(cóng)客戶端看(kàn) :盡量減少請(qǐng)求數量,比如(rú):依靠客戶端自(zì)身(shēn)的緩存或處理(lǐ)能力;盡量減少對服務端資源的不必要耗費,比如(rú):重複使用某些資源,如(rú)連接池客戶端處理(lǐ)的基本原則就(jiù)是:能不訪問(wèn)服務端就(jiù)不要訪問(wèn)。

2)從(cóng)服務端看(kàn):增加資源供給,比如(rú):更大(dà)的網絡帶寬,使用更高配置的服務器,使用高性能的Web服務器,使用高性能的數據庫;請(qǐng)求分(fēn)流,比如(rú):使用集群,分(fēn)布式的系統架構;應用優化,比如(rú):使用更高效的編程語言,優化處理(lǐ)業務邏輯的算法,優化訪問(wèn)數據庫的SQL。總之,基本原則是分(fēn)而治之,并提高單個請(qǐng)求的處理(lǐ)速度。

  •  高并發處理(lǐ)的基本手段

1) 客戶端發出請(qǐng)求層面,常見(jiàn)的手段有:盡量利用浏覽器的緩存功能,減少訪問(wèn)服務端,比如(rú):js、css、圖片等;可(kě)以考慮使用壓縮傳輸的功能,減少網絡流量,也會提高傳輸速度;考慮使用異步請(qǐng)求,分(fēn)批獲取數據。

2) 前端接收客戶端請(qǐng)求層面,常見(jiàn)的手段有:動靜(jìng)分(fēn)離(lí),部分(fēn)靜(jìng)态資源可(kě)以直接從(cóng)Nginx返回;按請(qǐng)求的不同,分(fēn)發到不同的後端進行處理(lǐ),比如(rú):負載均衡、業務拆分(fēn)訪問(wèn)等;前面再加上一層來(lái)做多個Nginx的負載均衡,比如(rú):LVS、F5等;還(hái)可(kě)以在更前面使用CDN服務;還(hái)可(kě)以對動态内容進行緩存,盡量減少訪問(wèn)後端服務。

3) Web服務器層面,常見(jiàn)的手段有:使用最新的JVM,并進行配置優化;對Web服務器進行配置優化,比如(rú):調整内存數量、線程數量等;提供多個能提供相(xiàng)同服務的Web服務器,以實現負載均衡;仔細規劃Web服務器上部署的應用規模;對Web服務器進行集群。

4) Web應用層面,常見(jiàn)的手段有:動态内容靜(jìng)态化、Java開發優化、優化處理(lǐ)業務邏輯的算法、合理(lǐ)高效的利用緩存;優化訪問(wèn)數據庫的Sql,可(kě)以考慮利用存儲過程等數據庫的能力;合理(lǐ)使用多線程,加快(kuài)業務處理(lǐ);部分(fēn)業務可(kě)以考慮内存數據庫,或者是進行純内存處理(lǐ);盡量避免遠(yuǎn)程調用、大(dà)量I/O等耗時的操作(zuò);合理(lǐ)規劃事(shì)務等較爲耗資源的操作(zuò);合理(lǐ)使用異步處理(lǐ);對部分(fēn)業務考慮采用預處理(lǐ)或者預計(jì)算的方式,減少實時計(jì)算量;内部系統間業務盡量直接調用、直接處理(lǐ),減少WebService、工(gōng)作(zuò)流等。

5) 數據庫層面,常見(jiàn)的手段有:合理(lǐ)選擇數據庫的引擎,比如(rú)Mysql的InnoDB與MyISAM引擎;進行配置優化;可(kě)以考慮使用存儲過程來(lái)處理(lǐ)複雜的數據邏輯;數據庫集群,進行讀(dú)寫分(fēn)離(lí);合理(lǐ)設計(jì)數據庫的表結構、索引等;分(fēn)庫、分(fēn)表,降低單庫、單表的數據量。

标簽: 服務器 并發