【知識分享】如何提升高併發量伺服器的效能

小鑫fwq發表於2023-01-30

一臺伺服器在單位時間裡能處理的請求越多,伺服器的能力越高,也就是伺服器併發處理能力越強。

那麼,有什麼方法衡量伺服器併發處理能力呢?

其一,吞吐率。單位時間裡伺服器處理的最大請求數,單位req/s。從伺服器角度,實際併發使用者數的可以理解為伺服器當前維護的代表不同使用者的檔案描述符總數,也就是併發連線數。伺服器一般會限制同時服務的最多使用者數,比如apache的MaxClents引數。

其二,壓力測試。有一個原理一定要先搞清楚,假如100個使用者同時向伺服器分別進行10個請求,與1個使用者向伺服器連續進行1000次請求,對伺服器的壓力是一樣嗎?實際上是不一樣的,因對每一個使用者,連續傳送請求實際上是指傳送一個請求並接收到響應資料後再傳送下一個請求。

瞭解了以上知識後,壹基比小鑫帶大家一起來看看:怎麼提高伺服器的併發處理能力?

1、HTML靜態化

其實大家都知道,效率最高、消耗最小的就是純靜態化的html頁面,所以我們儘可能使我們的網站上的頁面採用靜態頁面來實現,這個最簡單的方法其實也是最有效的方法。但是對於大量內容並且頻繁更新的網站,我們無法全部手動去挨個實現,於是出現了我們常見的資訊釋出系統CMS,像我們常訪問的各個門戶站點的新聞頻道,甚至他們的其他頻道,都是透過資訊釋出系統來管理和實現的,資訊釋出系統可以實現最簡單的資訊錄入自動生成靜態頁面,還能具備頻道管理、許可權管理、自動抓取等功能,對於一個大型網站來說,擁有一套高效、可管理的CMS是必不可少的。

除了門戶和資訊釋出型別的網站,對於互動性要求很高的社群型別網站來說,儘可能的靜態化也是提高效能的必要手段,將社群內的帖子、文章進行實時的靜態化、有更新的時候再重新靜態化也是大量使用的策略,像Mop的大雜燴就是使用了這樣的策略,網易社群等也是如此。

2、圖片伺服器分離

大家知道,對於Web伺服器來說,不管是Apache、IIS還是其他容器,圖片是最消耗資源的,於是我們有必要將圖片與頁面進行分離,這是基本上大型網站都會採用的策略,他們都有獨立的、甚至很多臺的圖片伺服器。這樣的架構可以降低提供頁面訪問請求的伺服器系統壓力,並且可以保證系統不會因為圖片問題而崩潰。

在應用伺服器和圖片伺服器上,可以進行不同的配置最佳化,比如apache在配置ContentType的時候可以儘量少支援、儘可能少的LoadModule,保證更高的系統消耗和執行效率。

3、資料庫叢集、庫表雜湊

大型網站都有複雜的應用,這些應用必須使用資料庫,那麼在面對大量訪問的時候,資料庫的瓶頸很快就能顯現出來,這時一臺資料庫將很快無法滿足應用,於是我們需要使用資料庫叢集或者庫表雜湊。

在資料庫叢集方面,很多資料庫都有自己的解決方案,Oracle、Sybase等都有很好的方案,常用的MySQL提供的Master/Slave也是類似的方案,您使用了什麼樣的DB,就參考相應的解決方案來實施即可。

4、考慮減少記憶體分配和釋放

伺服器的工作過程中,需要大量的記憶體,使得記憶體的分配和釋放工作尤為重要。可以透過改善資料結構和演算法複製度來適當減少中間臨時變數的記憶體分配及資料複製時間,而伺服器本身也使用了各自的策略來提高效率。

另外,還可以考慮共享記憶體。共享記憶體指在多處理器的計算機系統中,可以被不同中央處理器(CPU)訪問的大容量記憶體,也可以由不同程式共享,是非常快的程式通訊方式。

但是使用共享記憶體也有不好的地方,就是對於多機器時資料不好統一。

shell命令ipcs可用來顯示系統下共享記憶體的狀態,函式shmget可以建立或開啟一塊共享記憶體區,函式shmat將一個存在的共享記憶體段連線到本程式空間, 函式shmctl可以對共享記憶體段進行多種操作,函式shmdt函式分離該共享記憶體。

5、映象

映象是大型網站常採用的提高效能和資料安全性的方式,映象的技術可以解決不同網路接入商和地域帶來的使用者訪問速度差異,比如ChinaNet和EduNet之間的差異就促使了很多網站在教育網內搭建映象站點,資料進行定時更新或者實時更新。

6、負載均衡

負載均衡將是大型網站解決高負荷訪問和大量併發請求採用的高階解決辦法。

負載均衡是將訪問流量分發到多種伺服器上的線上服務,從而提高業務的服務能力和可用性。 負載均衡服務支援四層和七層會話保持技術,可以透過多種負載演算法將請求轉發到不同伺服器上, 在後端伺服器當機時,會自動將對應節點從負載均衡的轉發列表中移出,保證服務的高可用。 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70013663/viewspace-2933270/,如需轉載,請註明出處,否則將追究法律責任。

相關文章