吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何理解服務器的高性能

454398 ? 來源: Chinaunix ? 作者:Moonecho ? 2020-09-25 14:53 ? 次閱讀

對于大部分應用來說,想要高性能,主要是要做到盡可能的減少網絡請求(含DB、Redis、MongoDB、MQ)等。幾乎所有的應用,性能瓶頸永遠是在帶寬那里;關于各個組件到CPU的時間周期,文字描述如下:L1>L2>memory>disk>internet。

大家都知道IP是逐跳協議,也就是說我只能從一個路由器,到下一個路由器,再到下一個路由器,如果你的電腦到服務器,中途要經過很多個路由器,那時間周期就會長很多很多很多。為什么要做CDN、P2P等也是這個考慮,縮短網絡的路徑(降低帶寬承載也是一方面)。

就像是我有一個游戲服務器,在線人數約4000,里面是一個狀態機在跑,需要不斷的去檢測各種狀態、經驗、星座、任務開放、技能開放等。一個玩家大約10個狀態的判定,4000個玩家必須在200ms之內檢測完畢,不然延遲會很嚴重,那1s就是大約執行5次,如果每一次數據都去Redis去取,大約是5*10*4000 = 200k次,別說Redis,再牛的服務器都頂不住!

遇到這種情況,建議把數據放在內存里面,直接從內存取,然后foreach。大部分的應用優化到這里,基本上應付所謂的日pv百萬,就不是什么問題了。

到了這一步,那么問題來了,對于內部應用,比如分布式文件存儲、數據分析、任務調度,咋整?

對于大數據,其實一直是一個偽命題,數據量太大屬于硬傷。所有的做大數據處理的,都是把數據分成小數據,然后分塊來處理,最后再合并。其實從MySQL、Oracle、msSQL等一系列人RMDB的分區,分庫上的處理就可以看出來。想要提高性能,必須要做到,每個模塊處理的數據量,都是細分到了一定粒度的。這個時候index、group、hash等的重要性,在這里就體現出來了。

若我有一個業務系統,每天的日志大約是10個G,一個月就大約是300G,一季度大約1T,我需要看每小時/每天/每周/每月/每季度的各種報表,每次都去數T里面去找,肯定是不可能的。

一般按業務分析每分鐘的數據,10G/24/60大約7M,然后生成一個分析后的結果文件,大約幾K,1小時就是60個文件,需要查看每小時的數據,則將60個文件的結果合并。

那我需要查看某一個用戶,最近10天來的所有操作/訂單,那原分組方式,已經無法滿足,這個時候怎么辦呢?

在插入用戶數據的時候,可以按照一定規則,比如用戶編號的后兩位取摸,去存儲在某一個文件里面,10G的數據,則可以相對平均的分配到100個文件里面去,需要查看某用戶時,則可以針對用戶編號取摸,直接定位到那個文件,然后再去里面查詢數據。這個是比較簡單的gourp+index。這一塊想明白以后,你就可以在這個基礎上面,寫個定制化的簡單的fs了

經常聽到有人說,多線程的程序還不如單線程的程序性能高。那如何編寫一個能合理利用CPU資源的多線程程序?

大家都知道,線程切換是需要額外的開銷,所以在編寫多線程程序的時候,就需要盡可能的避免共享式資源,這樣就可以在保證數據一致性的同時,而又避開線程等待的時間。

舉個簡單的例子:

我有個大的字典(Dictionary/Map)存放用戶的會話數據,每個線程,去這個字典里面去讀/寫數據的時候,都需要去上鎖,才能保證數據的一致性,如果兩個(更多)線程同時去讀/寫數據,其他的線程就需要去等待當前線程釋放資源,線程越多,則等待的幾率越大,性能則越差,多線程處理變成了單線程處理,且等待完了以后,能否再切換回來這個線程繼續執行,又是另外一個開銷,這一部分屬于系統拖托管,屬于不可控的。

那么問題來了:怎么解決呢?

根據硬件和實際測試數據,合理分配線程資源,比如,我初始化了8個線程,每個用戶的請求,對于線程總數取模,保證每個用戶的請求,同一個線程處理,則可以在每個線程內部,存放這些用戶數據,每個線程在自己內部進行存取,避開了lock,也避開了線程等待/切換帶來的資源開銷。不取模,隨機分配線程,然后用一個hash表來存放,也可。讓每個線程,專注于做自己的事情,任務調度作業,也是基于這個處理。把線程處理機制,放大到虛擬機/物理機之間的消息分發,也是如此。

總體來說,避開網絡開銷,避開海量數據,避開資源爭奪 是所有高性能的幾個基本要素。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10902

    瀏覽量

    213000
  • 服務器
    +關注

    關注

    12

    文章

    9303

    瀏覽量

    86059
  • 路由器
    +關注

    關注

    22

    文章

    3744

    瀏覽量

    114470
  • 數據分析
    +關注

    關注

    2

    文章

    1461

    瀏覽量

    34164
收藏 人收藏

    評論

    相關推薦

    海單路高性能服務器主板

    服務器
    jf_10805031
    發布于 :2024年04月26日 14:23:58

    服務器技術基礎

    中國高性能計算機標準1.1 什么是服務器服務器Server從功能上說,它負責偵聽網絡上其它客戶機(Client)提交的服務請求,并提供相應的
    發表于 09-12 22:55

    華為服務器為什么可以保持高性能和高可靠性

    通過第三方調研機構數據可以看出,華為服務器出貨量不斷攀升,得益于其持續通過高強度的研發投入和聚焦創新,從而為用戶提供高可靠、高性能、簡單易用的計算平臺。
    發表于 08-02 07:19

    高性能服務器開發2018年的原創匯總

    高性能服務器開發 2018 年原創匯總
    發表于 06-10 12:33

    什么是服務器

    大數據_02【大數據基礎知識】01 什么是服務器02 服務器類型03 存儲磁盤(硬盤)01 什么是服務器服務器: 也稱伺服,是一種
    發表于 07-16 07:35

    高性能高并發服務器架構分享

    由于自己正在做一個高性能大用戶量的論壇程序,對高性能高并發服務器架構比較感興趣,于是在網上收集了不少這方面的資料和大家分享。希望能和大家交流 msn: ——————————————————————————————————————
    發表于 09-16 06:45

    詳解Nginx高性能的HTTP和反向代理服務器

    Nginx 是一個高性能的 HTTP 和反向代理服務器,特點是占用內存少,并發能力強,事實上 Nginx 的并發能力確實在同類型的網頁服務器中表現較好。
    的頭像 發表于 03-16 11:23 ?2513次閱讀

    如何監控服務器性能

    無論您的服務器是在Windows還是Unix上運行,這些關鍵性能領域都可以作為任何服務器監控策略的良好起點,跟蹤這些性能指標作為性能瓶頸的指
    的頭像 發表于 07-19 16:01 ?6309次閱讀

    如何理解高性能服務器高性能、高并發?

    當前,隨著“東數西算”政策的落地,算力時代正在全面開啟。隨著機器學習、深度學習的快速發展,人們對高性能服務器這一概念不再陌生。伴隨著數據分析、數據挖掘數目的不斷增大,傳統的風冷散熱方式已經不足以滿足散熱需要,這就需要新興的液冷散熱技術以此滿足節能減排、靜音高效的需求。
    的頭像 發表于 01-13 09:45 ?2262次閱讀
    如何<b class='flag-5'>理解</b><b class='flag-5'>高性能</b><b class='flag-5'>服務器</b>的<b class='flag-5'>高性能</b>、高并發?

    高性能整流顯著提高服務器供電效率

    電子發燒友網站提供《高性能整流顯著提高服務器供電效率.pdf》資料免費下載
    發表于 07-26 09:46 ?0次下載
    <b class='flag-5'>高性能</b>整流<b class='flag-5'>器</b>顯著提高<b class='flag-5'>服務器</b>供電效率

    人工智能服務器高性能計算需求

    人工智能(AI)服務器是一種專門為了運行人工智能應用和提供大數據處理能力而設計的高性能計算機。它既可以支持本地應用程序和網頁,也可以為云和本地服務器提供復雜的AI模型和服務
    的頭像 發表于 12-08 09:44 ?572次閱讀

    國產高性能溫補晶振用于服務器光模塊,替換SiTime

    國產高性能溫補晶振用于服務器光模塊,替換SiTime
    的頭像 發表于 08-09 09:41 ?445次閱讀
    國產<b class='flag-5'>高性能</b>溫補晶振用于<b class='flag-5'>服務器</b>光模塊,替換SiTime

    GPU高性能服務器配置

    GPU高性能服務器作為提升計算速度和效率的關鍵設備,在各大應用場景中發揮著越來越重要的作用。在此,petacloud.ai小編為你介紹GPU高性能服務器的配置要點。
    的頭像 發表于 10-21 10:42 ?294次閱讀

    高性能服務器有什么用處?

    高性能服務器是一種基于云計算技術的虛擬化服務器,具有高性能、靈活性、可靠性和安全性等特點。它廣泛應用于網絡托管服務、數據備份與恢復、大數據
    的頭像 發表于 11-04 10:22 ?278次閱讀

    Supermicro高性能服務器量產供貨,優化多重工作負載

    Supermicro, Inc.近日宣布其搭載Intel Xeon 6900系列性能核架構處理高性能服務器已開始量產供貨。 這一系列服務器
    的頭像 發表于 01-21 11:00 ?170次閱讀
    南陵县| 威尼斯人娱乐城进不了| 百家乐官网记牌器| 大发888娱乐平台| 百家乐官网赢家| 网上赌球| 网上百家乐辅助软件| 海威百家乐官网赌博机| 大发888娱乐城| 澳门百家乐心| 贵族百家乐官网的玩法技巧和规则 | 威尼斯人娱乐网假吗| 新澳博百家乐现金网| 易胜博百家乐官网作弊| 六合彩走势图| 华硕百家乐的玩法技巧和规则 | 百家乐官网猪仔路| 博马百家乐官网娱乐城| 百家乐筹码14克| 澳门百家乐玩法与游戏规则| 利澳百家乐官网的玩法技巧和规则 | 百家乐官网的巧门| 百家乐官网娱乐城公司| 战神线上娱乐| 大发888大发8668| 百家乐赌场| 澳门百家乐娱乐城送体验金| 康莱德百家乐官网的玩法技巧和规则 | 澳门百家乐怎么赢钱| 百家乐官网规则| 百家乐官网路单走势图| 百家乐官网游戏全讯网2| 聂荣县| 奔驰娱乐城开户| 大发888谨慎心态| 威尼斯人娱乐上网导航| 中国百家乐的玩法技巧和规则| 百家乐官网牌壳| 百家乐官网庄闲统计数| 百家乐官网代打是真的吗| 南汇区|