⑴ 淺談如何提高伺服器並發能力
吞吐率,單位時間里伺服器處理的最大請求數,單位req/s
從伺服器角度,版實際並發用戶數權的可以理解為伺服器當前維護的代表不同用戶的文件描述符總數,也就是並發連接數。伺服器一般會限制同時服務的最多用戶數,比如apache的MaxClents參數。
這里再深入一下,對於伺服器來說,伺服器希望支持高吞吐率,對於用戶來說,用戶只希望等待最少的時間,顯然,雙方不能滿足,所以雙方利益的平衡點,就是我們希望的最大並發用戶數。
⑵ 怎樣提高並發能力
從伺服器角度,實際並發用戶數的可以理解為伺服器當前維護的代表不同用戶的文專件描述符總數,也就屬是並發連接數。伺服器一般會限制同時服務的最多用戶數,比如apache的MaxClents參數。
這里再深入一下,對於伺服器來說,伺服器希望支持高吞吐率,對於用戶來說,用戶只希望等待最少的時間,顯然,雙方不能滿足,所以雙方利益的平衡點,就是我們希望的最大並發用戶數。
⑶ 如何設計高並發的伺服器,如何提升伺服器性能
你可以去伺服器廠商(正睿)的網上,將需求說明一下,讓對方給你產品配置方案(這點很重要),然後可以將參數和配置與其他品牌產品進行比較,找到最優性價比的產品。
⑷ 如何提高webserver並發能力
1、HTML靜態化
其實大家都知道,效率最高、消耗最小的就是純靜態化的 html頁面,所以我們盡可能使我們的網站上的頁面採用靜態頁面來實現, 這個最簡單的方法其實也是最有效的方法。但是對於大量內容並且頻繁更新的網站,我們無法全部手動去挨個實現,於是出現了我們常見的信息發布系統CMS,像 我們常訪問的各個門戶站點的新聞頻道,甚至他們的其他頻道,都是通過信息發布系統來管理和實現的,信息發布系統可以實現最簡單的信息錄入自動生成靜態頁 面,還能具備頻道管理、許可權管理、自動抓取等功能,對於一個大型網站來說,擁有一套高效、可管理的CMS是必不可少的。
除了門戶和信息發布類型的網站,對於交互性要求很高的社區類型網站來說,盡可能的靜態化也是提高性能的必要手段,將社區內的帖子、文章進行實時的靜態化,有更新的時候再重新靜態化也是大量使用的策略,像Mop的大雜燴就是使用了這樣的策略,網易社區等也是如此。
同 時,html靜態化也是某些緩存策略使用的手段,對於系統中頻繁使用資料庫查詢但是內容更新很小的應用,可以考慮使用html靜態化來實現,比如論壇中論 壇的公用設置信息,這些信息目前的主流論壇都可以進行後台管理並且存儲再資料庫中,這些信息其實大量被前台程序調用,但是更新頻率很小,可以考慮將這部分 內容進行後台更新的時候進行靜態化,這樣避免了大量的資料庫訪問請求。
2、圖片伺服器分離
大家知道,對於Web伺服器來說,不 管 是 Apache、IIS還是其他容器,圖片是最消耗資源的,於是我們有必要將圖片與頁面進行分離,這是基本上大型網站都會採用的策略,他們都有獨立的圖片服 務器,甚至很多台圖片伺服器。這樣的架構可以降低提供頁面訪問請求的伺服器系統壓力,並且可以保證系統不會因為圖片問題而崩潰,在應用伺服器和圖片伺服器 上,可以進行不同的配置優化,比如apache在配置ContentType的時候可以盡量少支持,盡可能少的LoadMole,保證更高的系統消耗 和執行效率。
3、資料庫集群和庫表散列
大型網站都有復雜的應用,這些應用必須使用資料庫,那麼在面對大量訪問的時候,資料庫的瓶頸很快就能顯現出來,這時一台資料庫將很快無法滿足應用,於是我們需要使用資料庫集群或者庫表散列。
在資料庫集群方面,很多資料庫都有自己的解決方案,Oracle、Sybase等都有很好的方案,常用的MySQL提供的Master/Slave也是類似的方案,您使用了什麼樣的DB,就參考相應的解決方案來實施即可。
上 面提到的資料庫集群由於在架構、成本、擴張性方面都會受到所採用DB類型的限制,於是我們需要從應用程序的角度來考慮改善系統架構,庫表散列是常用並且最 有效的解決方案。我們在應用程序中安裝業務和應用或者功能模塊將資料庫進行分離,不同的模塊對應不同的資料庫或者表,再按照一定的策略對某個頁面或者功能 進行更小的資料庫散列,比如用戶表,按照用戶ID進行表散列,這樣就能夠低成本的提升系統的性能並且有很好的擴展性。sohu的論壇就是採用了這樣的架 構,將論壇的用戶、設置、帖子等信息進行資料庫分離,然後對帖子、用戶按照板塊和ID進行散列資料庫和表,最終可以在配置文件中進行簡單的配置便能讓系統 隨時增加一台低成本的資料庫進來補充系統性能。
4、緩存
緩存一詞搞技術的都接觸過,很多地方用到緩存。網站架構和網站開發中的緩存也是非常重要。這里先講述最基本的兩種緩存。高級和分布式的緩存在後面講述。
架構方面的緩存,對Apache比較熟悉的人都能知道Apache提供了自己的緩存模塊,也可以使用外加的Squid模塊進行緩存,這兩種方式均可以有效的提高Apache的訪問響應能力。
網 站程序開發方面的緩存,Linux上提供的Memory Cache是常用的緩存介面,可以在web開發中使用,比如用Java開發的時候就可以調用MemoryCache對一些數據進行緩存和通訊共享,一些大 型社區使用了這樣的架構。另外,在使用web語言開發的時候,各種語言基本都有自己的緩存模塊和方法,PHP有Pear的Cache模塊,Java就更多 了,.net不是很熟悉,相信也肯定有。
5、鏡像
鏡像是大型網站常採用的提高性能和數據安全性的方式,鏡像的技術可以解決不同 網 絡接入商和地域帶來的用戶訪問速度差異,比如ChinaNet和ENet之間的差異就促使了很多網站在教育網內搭建鏡像站點,數據進行定時更新或者實 時更新。在鏡像的細節技術方面,這里不闡述太深,有很多專業的現成的解決架構和產品可選。也有廉價的通過軟體實現的思路,比如Linux上的rsync等 工具。
6、負載均衡
負載均衡將是大型網站解決高負荷訪問和大量並發請求採用的終極解決辦法。
負載均衡技術發展了多年,有很多專業的服務提供商和產品可以選擇,我個人接觸過一些解決方法,其中有兩個架構可以給大家做參考。
硬體四層交換
第 四層交換使用第三層和第四層信息包的報頭信息,根據應用區間識別業務流,將整個區間段的業務流分配到合適的應用伺服器進行處理。第四層交換功能就象是虛 IP,指向物理伺服器。它傳輸的業務服從的協議多種多樣,有HTTP、FTP、NFS、Telnet或其他協議。這些業務在物理伺服器基礎上,需要復雜的 載量平衡演算法。在IP世界,業務類型由終端TCP或UDP埠地址來決定,在第四層交換中的應用區間則由源端和終端IP地址、TCP和UDP埠共同決 定。
在硬體四層交換產品領域,有一些知名的產品可以選擇,比如Alteon、F5等,這些產品很昂貴,但是物有所值,能夠提供非常優秀的性能和很靈活的管理能力。Yahoo中國當初接近2000台伺服器使用了三四台Alteon就搞定了。
軟體四層交換
大家知道了硬體四層交換機的原理後,基於OSI模型來實現的軟體四層交換也就應運而生,這樣的解決方案實現的原理一致,不過性能稍差。但是滿足一定量的壓力還是游刃有餘的,有人說軟體實現方式其實更靈活,處理能力完全看你配置的熟悉能力。
軟 件四層交換我們可以使用Linux上常用的LVS來解決,LVS就是Linux Virtual Server,他提供了基於心跳線heartbeat的實時災難應對解決方案,提高系統的魯棒性,同時可供了靈活的虛擬VIP配置和管理功能,可以同時滿 足多種應用需求,這對於分布式的系統來說必不可少。
一個典型的使用負載均衡的策略就是,在軟體或者硬體四層交換的基礎上搭建squid集群,這種思路在很多大型網站包括搜索引擎上被採用,這樣的架構低成本、高性能還有很強的擴張性,隨時往架構裡面增減節點都非常容易。
⑸ 如何提升web伺服器並發訪問負載能力
網路的負載均衡是一種動態均衡技術,通過一些工具實時地分析數據包,掌握網路中的數據流量狀況,把任務合理均衡地分配出去。
⑹ 如何提高伺服器並發能力
有什麼方法衡量伺服器並發處理能力
1. 吞吐率
吞吐率,單位時間里伺服器處理的最大請求數,單位req/s
從伺服器角度,實際並發用戶數的可以理解為伺服器當前維護的代表不同用戶的文件描述符總數,也就是並發連接數。伺服器一般會限制同時服務的最多用戶數,比如apache的MaxClents參數。
這里再深入一下,對於伺服器來說,伺服器希望支持高吞吐率,對於用戶來說,用戶只希望等待最少的時間,顯然,雙方不能滿足,所以雙方利益的平衡點,就是我們希望的最大並發用戶數。
2. 壓力測試
有一個原理一定要先搞清楚,假如100個用戶同時向伺服器分別進行10個請求,與1個用戶向伺服器連續進行1000次請求,對伺服器的壓力是一樣嗎?實際上是不一樣的,因對每一個用戶,連續發送請求實際上是指發送一個請求並接收到響應數據後再發送下一個請求。這樣對於1個用戶向伺服器連續進行1000次請求, 任何時刻伺服器的網卡接收緩沖區中只有1個請求,而對於100個用戶同時向伺服器分別進行10個請求,伺服器的網卡接收緩沖區最多有100個等待處理的請求,顯然這時的伺服器壓力更大。
壓力測試前提考慮的條件
並發用戶數: 指在某一時刻同時向伺服器發送請求的用戶總數(HttpWatch)
總請求數
請求資源描述
請求等待時間(用戶等待時間)
用戶平均請求的等待時間
伺服器平均請求處理的時間
硬體環境
壓力測試中關心的時間又細分以下2種:
用戶平均請求等待時間(這里暫不把數據在網路的傳輸時間,還有用戶PC本地的計算時間計算入內)
伺服器平均請求處理時間
用戶平均請求等待時間主要用於衡量伺服器在一定並發用戶數下,單個用戶的服務質量;而伺服器平均請求處理時間就是吞吐率的倒數,一般來說,用戶平均請求等待時間 = 伺服器平均請求處理時間 * 並發用戶數
怎麼提高伺服器的並發處理能力
1. 提高CPU並發計算能力
伺服器之所以可以同時處理多個請求,在於操作系統通過多執行流體系設計使得多個任務可以輪流使用系統資源,這些資源包括CPU,內存以及I/O. 這里的I/O主要指磁碟I/O, 和網路I/O。
多進程 & 多線程
多執行流的一般實現便是進程,多進程的好處可以對CPU時間的輪流使用,對CPU計算和IO操作重疊利用。這里的IO主要是指磁碟IO和網路IO,相對CPU而言,它們慢的可憐。
而實際上,大多數進程的時間主要消耗在I/O操作上。現代計算機的DMA技術可以讓CPU不參與I/O操作的全過程,比如進程通過系統調用,使得CPU向網卡或者磁碟等I/O設備發出指令,然後進程被掛起,釋放出CPU資源,等待I/O設備完成工作後通過中斷來通知進程重新就緒。對於單任務而言,CPU大部分時間空閑,這時候多進程的作用尤為重要。
多進程不僅能夠提高CPU的並發度。其優越性還體現在獨立的內存地址空間和生命周期所帶來的穩定性和健壯性,其中一個進程崩潰不會影響到另一個進程。
但是進程也有如下缺點:
fork()系統調用開銷很大: prefork
進程間調度和上下文切換成本: 減少進程數量
龐大的內存重復:共享內存
IPC編程相對比較麻煩
⑺ 如何提高並發寫入性能
有什麼方法衡來量伺服器自並發處理能力
1.吞吐率
吞吐率,單位時間里伺服器處理的最大請求數,單位req/s
從伺服器角度,實際並發用戶數的可以理解為伺服器當前維護的代表不同用戶的文件描述符總數,也就是並發連接數。
伺服器一般會限制同時服務的最多用戶數,比如apache的MaxClents參數。
這里再深入一下,對於伺服器來說,伺服器希望支持高吞吐率,對於用戶來說,用戶只希望等待最少的時間,顯然,雙方不能滿足,所以雙方利益的平衡點,就是希望的最大並發用戶數。
2.壓力測試
有一個原理一定要先搞清楚,假如100個用戶同時向伺服器分別進行10個請求,與1個用戶向伺服器連續進行1000次請求,對伺服器的壓力是一樣嗎。
實際上是不一樣的,因對每一個用戶,連續發送請求實際上是指發送一個請求並接收到響應數據後再發送下一個請求。
這樣對於1個用戶向伺服器連續進行1000次請求,任何時刻伺服器的網卡接收緩沖區中只有1個請求,而對於100個用戶同時向伺服器分別進行10個請求,伺服器的網卡接收緩沖區最多有100個等待處理的請求,顯然這時的伺服器壓力更大。
⑻ 如何提高資料庫高峰時訪問的並發能力
1:首先需要有非常良好的網路帶寬,若有上萬人同時錄入數據的普通的Web信息管理系統,至少需要10M左右的網路帶寬,而且網通、電信的主幹網都有接入比較好,否則全國各地的網路情況都不太一樣,有的城市錄入數據時可能會遇到網路非常緩慢的情況,甚至到無法忍受的程度。
2:須有一台牛X的Web伺服器 + 一台牛X的資料庫伺服器(備注接近頂配的奢侈硬體伺服器非個人PC),由於是需要錄入1000萬條以上數據,最好採用Oracle資料庫比較理想一些,經得起考驗一些。
3:需要進行適當的內存緩存優化策略,不能所有的資料庫都依靠SQL資料庫的方式把壓力放在資料庫伺服器上,盡量多使用內存的方式處理數據。
4:需要一個牛X的,經得起考驗的資料庫訪問層,因為每秒都有可能成千上萬的人在訪問,若是質量不良好的資料庫訪問組件、或者不穩定的資料庫訪問組件,更容易導致系統崩潰、或者佔用非常龐大的內存,最後容易導致整個系統的崩潰。
5:需要優化分頁存取數據功能,應為有可能會有1000萬條數據,若分頁讀取數據的功能沒能優化到最高,也很容易導致系統的崩潰,因為上萬人萬一在同一時間,或者接近同一時間點了查詢某頁數據時,那系統就真崩潰了,分頁存取數據一定需要做到極致才可以。
6:需要進行資料庫索引優化,有索引和沒索引的性能差距有時候會是100倍,大數據量時可能會有1000倍都有可能,資料庫索引優化到極致了更容易得到運行順暢的信息管理系統。
7:嚴謹高效的資料庫事務處理,由於高並發,並且有些單據是需要同時寫入多個表,需要保證資料庫的一致性,要麼全部成功,要麼全部失敗重新錄入數據,所以需要一個高效的資料庫事務處理機制的配合。
8:所有的系統的操作日誌、異常信息都需要完整的記錄下來,當系統發生一些故障時,可以快速排查問題,對正確診斷系統發生的故障的原因做分析參考用。
9:需要經常檢測系統的各項指標、例如各伺服器的內存使用情況、CPU使用情況、網路帶寬使用情況,高峰時的各個參數是什麼情況、系統不繁忙時的情況等,若伺服器快承受不了壓力了,就得馬上增加負載均衡的伺服器,網路帶寬不夠了需要增加等等,總不能等系統崩潰了再去做這些事情。
10:每個頁面的HTML、JS都進行優化,若某個頁面多餘發了100個字元的垃圾HTML代碼,那1萬人每天獲得100次,那得佔用多少網路帶寬,100×100×1萬個字元的多餘HTML被網路上傳輸了,要知道接入主幹網的網路資源是多麼寶貴,費用是多麼昂貴。
11:HTML、JS等都可以考慮用壓縮模式傳輸,那樣網路傳輸效率會更高一些。
12:由於全國各地上萬人,會有各種各樣的人,這些人也未必全是好人,可能某些人心情不好,或者其他什麼的,可能就會攻擊我們的軟體系統破壞數據,這些也可能是由於好奇心導致的,所以系統需要有嚴格的許可權管理控制,不應該進入的頁面絕對不能進入,不應該看的數據絕對不讓看,不能操作的功能絕對不讓多操作,一方面防止沒必要的多餘的麻煩,另一方面也可以減少系統被攻擊破壞的可能性。
⑼ 怎麼樣的性能才算是支持高並發的伺服器
伺服器並發指復用戶同訪問資料庫制同欄位行用戶行於伺服器性能種考驗
再伺服器自性能限並發用戶數候再伺服器支持住事實我經能遇由於並發用戶導致系統緩慢甚至癱瘓現象比說使用些線考試報名系統朋友都發現半夜登錄系統報名比白登錄系統報名要容網頁反應速度要快些由於晚並發用戶數比較原
於IT運維員說伺服器並發恐怖伺服器用戶並發數並IT運維員所能控制我能做採用各種手段提升系統性能提升伺服器性能利用率