<delect id="sj01t"></delect>
  1. <em id="sj01t"><label id="sj01t"></label></em>
  2. <div id="sj01t"></div>
    1. <em id="sj01t"></em>

            <div id="sj01t"></div>

            軟件開發中常見的十大系統瓶頸

            時間:2024-08-30 12:02:55 J2EE培訓 我要投稿
            • 相關推薦

            軟件開發中常見的十大系統瓶頸

              件開發常見的20個傳統的系統瓶頸,這聽起來像是說有20個故事情節,并且依賴于你如何策劃這些故事,或許都是真的,但唯有實踐才知道它們帶給我們的酸甜苦辣。下面是小編整理的關于軟件開發中常見的十大系統瓶頸,希望可以幫助大家!

              Russell說:“我真希望在年輕時看到這樣的一份列表”。伴隨著經驗的增長、項目的增多、解決各種不同類型的問題和不斷總結各種經驗教訓,你會在這份列表上添加更多的東西。所以,當你在閱讀該份列表時就像是在回顧一個個故事片段。

              數據庫

              工作任務內存超過可用的RAM內存

              長/短查詢

              寫入沖突

              大連接(join)占用內存

              虛擬化

              共享一個HDD、磁盤尋死(disk seek death)

              在云端網絡I/O波動

              編程

              線程:死鎖、調試、非線性擴展等

              事件驅動編程:callback()過于復雜、如何在函數調用中存儲有狀態等

              缺乏調優、跟蹤、日志等

              單模塊不可擴展、單點故障(SPOF:Single Point Of Failure)、非橫向擴展等

              有狀態應用程序

              設計問題:開發的應用程序只在自己的機器行運行正常,或者只是在幾個人測試的時候正常(沒有經歷壓力測試)。

              算法過于復雜

              相關服務,例如DNS查找以及其他可能屏蔽的服務

              堆棧空間

              磁盤

              訪問本地磁盤

              隨機訪問磁盤I/O

              磁盤碎片

              當SSD寫入的數據大于SSD容量時,性能會下降

              OS

              Fsync飽和,Linux緩沖區填塞(Fsync flushing, linux buffer cache filling up)

              TCP緩沖區太小

              文件描述符限制

              功率分配(Power budget)

              緩存

              沒使用memcached(數據庫崩潰)

              HTTP中:headers、etags、沒有使用gzip壓縮等。

              沒有充分利用瀏覽器緩存

              字節碼緩存(如PHP)

              L1/L2緩存:這是個令人頭疼的大瓶頸。把關鍵并且經常訪問的數據存儲在L1/L2中。這涉及到很多:snappy網絡I/O,列數據庫直接在壓縮數據上運行算法等。利用一些技術不銷毀你的TLB。最重要的思想是緊緊的抓住計算機的體系結構,涉及多核CPU,L1/L2,共享的L3,NUMA RAM,從DRAM到芯片數據傳輸帶寬/延遲,DRAM緩存的DiskPages,DirtyPages,流經CPU<->DRAM<->NIC的TCP包。

              CPU

              CPU過載

              內容切換—>單核上開啟的線程過多、Linux調度器、系統調用太多等

              IO等待—>所有的CPU在同速等待

              CPU緩存:緩存數據是一個細粒度進程,為了在多個實例與不同的值數據之間找到正確的平衡,來保持緩存數據的一致性和繁重同步。

              底板吞吐量(Backplane throughput)

              網絡

              NIC刷爆、IRQ飽和、軟中斷占用掉了100%CPU

              DNS查詢

              數據包丟失

              網絡中存在預期外的路由

              訪問網絡磁盤

              共享SAN

              服務器故障—>無法從服務處得到響應

              進程

              測試時間

              開發時間

              團隊規模

              預算

              代碼債務

              內存

              內存不足—>殺死進程,切換到swap,掛起

              內存不足導致磁盤交換(與swap相關)

              記憶庫開銷過大(Memory library overhead)

              內存分片(在Java中需要會因為內存回收而停頓;在C中,malloc總是開始分配內存)

            【軟件開發中常見的十大系統瓶頸】相關文章:

            英文寫作中的最常見十大句式09-26

            常見系統進程大全07-26

            2017中考英語寫作十大常見錯誤分析08-30

            十大常見化妝誤區07-13

            速錄練習過程中怎么突破瓶頸01-23

            遠離十大常見化妝誤區07-14

            網絡營銷常見的十大誤區01-21

            十大最常見高爾夫規則誤區07-28

            中考英語十大常見寫作話題06-14

            聲樂學習中的常見誤區10-17

            <delect id="sj01t"></delect>
            1. <em id="sj01t"><label id="sj01t"></label></em>
            2. <div id="sj01t"></div>
              1. <em id="sj01t"></em>

                      <div id="sj01t"></div>
                      黄色视频在线观看