如何提升高併發量伺服器的效能
一臺伺服器在單位時間裡能處理的請求越多,伺服器的能力越高,也就是伺服器併發處理能力越強。
那麼,有什麼方法衡量伺服器併發處理能力呢?
其一,吞吐率。單位時間裡伺服器處理的最大請求數,單位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/70019600/viewspace-2941668/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【知識分享】如何提升高併發量伺服器的效能伺服器
- 高併發場景下如何優化伺服器的效能?優化伺服器
- 如何提升伺服器的高併發能力伺服器
- 如何提高伺服器的併發處理能力?硬核!伺服器
- 【計算機內功心法】七:高併發高效能伺服器是如何實現的計算機伺服器
- PG資料庫伺服器的CPU使用率突然升高該如何分析資料庫伺服器
- 如何處理系統具有較大併發量?
- 千萬併發連線下,如何保障網路效能
- 相親交友原始碼實現程式內快取,提升高併發能力!原始碼快取
- 【高併發】高併發環境下如何優化Tomcat效能?看完我懂了!優化Tomcat
- 伺服器的效能如何提高伺服器
- 系統吞吐量(TPS)、使用者併發量、效能測試概念和公式公式
- 併發工具類(三)控制併發執行緒的數量 Semphore執行緒
- Nginx總結(九)Nginx伺服器高效能優化的配置--輕鬆實現10萬併發訪問量Nginx伺服器優化
- 基於協程的高效能高併發伺服器框架—協程模組伺服器框架
- 效能測試中如何確定TPS和併發數
- 應對高併發,伺服器如何笑而不“崩”伺服器
- 系統吞吐量、TPS(QPS)、使用者併發量、效能測試概念和公式公式
- 如何知道資料庫建立以來併發事務的最大數量資料庫
- 伺服器核心硬體的效能如何影響伺服器的整體效能?伺服器
- 最全的伺服器提權伺服器
- 針對web高併發量的處理Web
- 【Zinx第一章-引言】Golang輕量級併發伺服器框架Golang伺服器框架
- 如何構建高可用、高併發、高效能的雲原生容器網路?
- 併發網伺服器遷移伺服器
- 伺服器如何提供效能呢?伺服器
- 如何測試伺服器效能?伺服器
- Java中不同的併發實現的效能比較Java
- Jmeter效能測試:高併發分散式效能測試JMeter分散式
- IIS Web伺服器的高併發設定Web伺服器
- 一個高效能,高併發,高可用的系統是如何演變來的
- IM伺服器:開發一個高併發的IM伺服器難在哪伺服器
- 要點提煉|開發藝術之效能優化優化
- 提權系列(二)----Windows Service 伺服器提權之Mssql提權,GetPass提權,hash提權,LPK提權Windows伺服器SQL
- 【Zinx第四章-全域性配置】Golang輕量級併發伺服器框架Golang伺服器框架
- [譯文]greenlet:輕量級併發程式
- Java併發工具類(訊號量Semaphore)Java
- 關於SignalR併發量測試SignalR