靜網PWA視頻評論

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

2024年01月05日

- txt下載

軟體系統開發常見的十大瓶頸
J2EE核心是一組技術規範與指南,其中所包含的各類組件、服務架構及技術層次,均有共同的標準及規格。下面是小編整理的關於軟體系統開發常見的十大瓶頸,歡迎大家參考!
  資料庫
工作任務內存超過可用的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總是開始分配內存)

收藏

相關推薦

清純唯美圖片大全

字典網 - 試題庫 - 元問答 - 简体 - 頂部

Copyright © cnj8 All Rights Reserved.