咨詢電(diàn)話(huà):023-88959644    24小(xiǎo)時(shí)服務熱線:400-023-8809
NEWS CENTER ·
新聞動态
關注中技(jì)互聯 關注前沿

如何實現單台服務器(qì)并發百萬級配置

發表日期:2013-05-20    文章編輯:大(dà)志(zhì)    浏覽次數(shù):52    标簽:

www.zjcoo.com

   随着硬件技(jì)術(shù)的飛速發展,當前單台PC 服務器(qì)的性能得(de)到了顯著提升,反之,硬件成本卻在快速下降。另一方面,多(duō)數(shù)門(mén)戶網站(zhàn)、大(dà)型社區(qū)在建設WEB服務、郵件服務等網絡服務時(shí),仍然傾向于通(tōng)過簡單地擴充并行(xíng)服務器(qì)數(shù)量、存儲子系統來(lái)支持用戶請(qǐng)求,而沒有(yǒu)考慮深入挖掘服務器(qì)本身的性能潛力!即使單台硬件成本足夠的低(dī)廉,數(shù)量巨大(dà)的基礎硬件及其維護費用對任何企業而言仍然是一項沉重的負擔!

  如果能夠在滿足大(dà)量用戶請(qǐng)求的同時(shí),通(tōng)過盡量提升服務器(qì)的整體(tǐ)性能,從而減少(shǎo)服務器(qì)的保有(yǒu)量,也同時(shí)減少(shǎo)了設備維護費用,企業是不是可(kě)以得(de)到更大(dà)的收益呢?答(dá)案是肯定的!

  就中技(jì)看來(lái),對于需要支持百萬級用戶并發訪問的WEB 服務而言,确實沒有(yǒu)必要采用多(duō)台服務器(qì),單單一台普通(tōng)的PC服務器(qì)就可(kě)以勝任! 個(gè)人(rén)認為(wèi)當前許多(duō)WEB業務應用都是對硬件投資的極大(dà)浪費!為(wèi)什麽這樣說呢?第一,當前PC服務器(qì)多(duō)數(shù)帶多(duō)個(gè)獨立的CPU,而且每個(gè)CPU還(hái)帶多(duō)個(gè)硬核,而許多(duō)WEB應用服務器(qì)、數(shù)據庫服務器(qì)軟件根本就沒有(yǒu)對多(duō)核處理(lǐ)器(qì)進行(xíng)支持和(hé)優化,基本上(shàng)是一個(gè)CPU在工作(zuò),其它都在休息,沒能充分發揮多(duō)CPU的能力;第二,雖然服務器(qì)安裝有(yǒu)高(gāo)性能網卡,但(dàn)是所采用的操作(zuò)系統沒有(yǒu)對網絡吞吐進行(xíng)優化,無法支持巨大(dà)的網絡IO請(qǐng)求,沒能發揮出高(gāo)性能網卡的優勢;第三、服務器(qì)一般都支持4G或以上(shàng)更大(dà)的內(nèi)存,而且在x86平台下內(nèi)存條的價格就像大(dà)白菜,非常低(dī)廉。即使如此廉價豐富的內(nèi)存資源也沒有(yǒu)得(de)到好好利用,多(duō)數(shù)應用根本沒有(yǒu)考慮基于內(nèi)存的高(gāo)速緩存方案,比如業務應用中最常見的數(shù)據庫訪問操作(zuò),通(tōng)常都是直接連接到數(shù)據庫進行(xíng)SQL操作(zuò),其處理(lǐ)性能上(shàng)不去是顯而易見的了;第四,應用程序本身不夠優化。不管存在何種原因,公認的一點是一個(gè)不優化的業務應用對系統整體(tǐ)性能表現有(yǒu)很(hěn)大(dà)影(yǐng)響。高(gāo)深的優化技(jì)術(shù)我們不談,就舉兩個(gè)常見的優化處理(lǐ)來(lái)說明(míng),例子一,對于系統中保證唯一而且又不經常變化的用戶ID,是否可(kě)以考慮不采用鏈表而采用MAP表存儲呢?後者比前者查詢快多(duō)了!;例子二,對于判斷一個(gè)表中是否存在某條記錄,通(tōng)常使用這樣的SQL語句:“select * from xx_table where xx_id=xx”, 試問是否可(kě)以改成“select 1 from xx_table where xx_id=xx”?一字之差,在高(gāo)頻度數(shù)據查詢過程中,後面的語句比前面的快很(hěn)多(duō)呀。第五,一般服務器(qì)群前面都有(yǒu)一個(gè)或多(duō)個(gè)防火(huǒ)牆設備,用來(lái)進行(xíng)包過濾和(hé)端口映射。如果服務器(qì)的自身安全性很(hěn)強的話(huà),這些(xiē)防火(huǒ)牆設備也是可(kě)以被省略的。

  基于上(shàng)述理(lǐ)由,某人(rén)及同事設計(jì)并實現了一款隻需要單台PC 服務器(qì)就可(kě)以支持百萬級用戶并發訪問的WEB服務器(qì)(硬件采用MS-9188主闆,帶兩顆Intel(R) Xeon(R) E5410 CPU,每個(gè)CPU含4個(gè)核, 8G內(nèi)存, 320G SATA 硬盤, 闆載8個(gè)Intel 82571EB 千兆網卡,一款非常普遍的PC服務器(qì))。

  現就我們的工作(zuò)做(zuò)一簡要介紹:

  第一, 選用64位版本的Linux對稱多(duō)處理(lǐ)操作(zuò)系統,以便支持超過4G的內(nèi)存和(hé)多(duō)核心CPU。

  第二,提高(gāo)系統網絡IO性能。雖然Linux操作(zuò)系統本身的網絡處理(lǐ)能力相對Windows系統表現更好,但(dàn)要做(zuò)到千兆級别的網絡吞吐還(hái)是力不從心。這一點可(kě)以通(tōng)過Smartbits工具得(de)到驗證。要支持百萬級的用戶請(qǐng)求,首先要考慮提高(gāo)服務器(qì)的網絡吞吐能力!我們做(zuò)過實驗,通(tōng)過精簡內(nèi)核協議棧的方法是無法達到要求的,原因很(hěn)簡單,網絡接收包和(hé)發送包的過程都必須經曆多(duō)次內(nèi)核與用戶空(kōng)間(jiān)的拷貝,這嚴重占用CPU的處理(lǐ)時(shí)間(jiān)。因此,我們設計(jì)采用“零拷貝”技(jì)術(shù),利用DMA機制(zhì)和(hé)內(nèi)存映射技(jì)術(shù),實現網絡報文在內(nèi)核空(kōng)間(jiān)與用戶空(kōng)間(jiān)之間(jiān)的快速傳遞,這個(gè)過程徹底解放了CPU,使得(de)數(shù)據收發與業務處理(lǐ)可(kě)以并行(xíng)進行(xíng)。

  第三,建立用戶空(kōng)間(jiān)TCP/IP協議棧,建立具有(yǒu)多(duō)級快速搜索能力的連接追蹤池,以滿足百萬級用戶并發訪問的要求。這是性能得(de)以提升的關鍵所在。如果采用原始的 Linux操作(zuò)系統,單單打開(kāi)百萬個(gè)文件描述符就是個(gè)耗時(shí)的操作(zuò)!我們設計(jì)僅實現1~7層中必要的協議處理(lǐ)過程,去除原內(nèi)核中冗餘的協議處理(lǐ)過程,實行(xíng) “精兵簡政”策略。整個(gè)協議處理(lǐ)過程采用CPU親和(hé)等手段實現多(duō)CPU、多(duō)核并行(xíng)處理(lǐ),提高(gāo)多(duō)CPU的利用率。

  第四,修改WEB應用服務器(qì)軟件。設計(jì)采用開(kāi)源的Apache服務器(qì),在其基礎上(shàng)增加了對“零拷貝”網絡IO的支持、用戶請(qǐng)求的多(duō)CPU并行(xíng)處理(lǐ)支持、靜态頁面臨時(shí)文件系統存儲、內(nèi)存數(shù)據庫支持等技(jì)術(shù),充分利用“時(shí)間(jiān)局部性原理(lǐ)和(hé)空(kōng)間(jiān)局部性原理(lǐ)”,顯著提升WEB服務器(qì)軟件的性能。

  第五,提升服務器(qì)自身安全性。采用用戶态協議棧後,我們實現了對網絡報文的全面控制(zhì),自己解包自己打包,并加入對各種DDos攻擊的防禦,而且有(yǒu)針對性地對包進行(xíng)了內(nèi)容審查,其安全過濾标準遠高(gāo)于單純的包過濾,完全做(zuò)到了對業務內(nèi)容的過濾。這樣防火(huǒ)牆設備就顯得(de)多(duō)餘了,畢竟基于應用軟件漏洞的入侵才是當前黑(hēi)客攻擊的主要手段!而在這方面,包過濾防火(huǒ)牆基本上(shàng)無所作(zuò)為(wèi),反倒是一個(gè)網絡瓶頸!當然,如果防火(huǒ)牆作(zuò)為(wèi)負載均衡設備來(lái)使用又另當别論。

  第六,基于具體(tǐ)的業務應用進行(xíng)優化。我們對應用系統的優化主要從磁盤IO、數(shù)據庫訪問、業務算(suàn)法等方面進行(xíng)。一個(gè)精心優化的業務系統,其性能也會(huì)得(de)到顯著提高(gāo)。

  由于我們采用了上(shàng)述步驟,我們最終實現了利用一台PC 服務器(qì)支持百萬WEB用戶并行(xíng)訪問的要求。綜合來(lái)看,我們設計(jì)的思路主要是盡量提升系統潛能,通(tōng)過采取多(duō)核并發、網絡吞吐優化、業務系統優化等手段,多(duō)管齊下來(lái)提升系統的整體(tǐ)性能,以求做(zuò)到用好設備、用精設備的理(lǐ)念,最終達到在滿足用戶需求的前提下,減少(shǎo)設備投入,節約成本的目的。

重慶中技互聯網信息咨詢有限公司 www.zjcoo.com

如沒特殊注明(míng),文章均為(wèi)中技(jì)互聯原創,轉載請(qǐng)注明(míng)來(lái)自www.zjcoo.com
相關新聞

CopyrightZJCOO technology Co., LTD. All Rights Reserved.    

渝ICP 備11003429号

  • qq客服
  • 公衆号
  • 手機版
  • 新浪微博