- 相關(guān)推薦
軟件系統(tǒng)開(kāi)發(fā)常見(jiàn)的十大瓶頸
J2EE核心是一組技術(shù)規(guī)范與指南,其中所包含的各類(lèi)組件、服務(wù)架構(gòu)及技術(shù)層次,均有共同的標(biāo)準(zhǔn)及規(guī)格。下面是小編整理的關(guān)于軟件系統(tǒng)開(kāi)發(fā)常見(jiàn)的十大瓶頸,歡迎大家參考!
數(shù)據(jù)庫(kù)
工作任務(wù)內(nèi)存超過(guò)可用的RAM內(nèi)存
長(zhǎng)/短查詢(xún)
寫(xiě)入沖突
大連接(join)占用內(nèi)存
虛擬化
共享一個(gè)HDD、磁盤(pán)尋死(disk seek death)
在云端網(wǎng)絡(luò)I/O波動(dòng)
編程
線(xiàn)程:死鎖、調(diào)試、非線(xiàn)性擴(kuò)展等
事件驅(qū)動(dòng)編程:callback()過(guò)于復(fù)雜、如何在函數(shù)調(diào)用中存儲(chǔ)有狀態(tài)等
缺乏調(diào)優(yōu)、跟蹤、日志等
單模塊不可擴(kuò)展、單點(diǎn)故障(SPOF:Single Point Of Failure)、非橫向擴(kuò)展等
有狀態(tài)應(yīng)用程序
設(shè)計(jì)問(wèn)題:開(kāi)發(fā)的應(yīng)用程序只在自己的機(jī)器行運(yùn)行正常,或者只是在幾個(gè)人測(cè)試的時(shí)候正常(沒(méi)有經(jīng)歷壓力測(cè)試)。
算法過(guò)于復(fù)雜
相關(guān)服務(wù),例如DNS查找以及其他可能屏蔽的服務(wù)
堆?臻g
磁盤(pán)
訪(fǎng)問(wèn)本地磁盤(pán)
隨機(jī)訪(fǎng)問(wèn)磁盤(pán)I/O
磁盤(pán)碎片
當(dāng)SSD寫(xiě)入的數(shù)據(jù)大于SSD容量時(shí),性能會(huì)下降
OS
Fsync飽和,Linux緩沖區(qū)填塞(Fsync flushing, linux buffer cache filling up)
TCP緩沖區(qū)太小
文件描述符限制
功率分配(Power budget)
緩存
沒(méi)使用memcached(數(shù)據(jù)庫(kù)崩潰)
HTTP中:headers、etags、沒(méi)有使用gzip壓縮等。
沒(méi)有充分利用瀏覽器緩存
字節(jié)碼緩存(如PHP)
L1/L2緩存:這是個(gè)令人頭疼的大瓶頸。把關(guān)鍵并且經(jīng)常訪(fǎng)問(wèn)的數(shù)據(jù)存儲(chǔ)在L1/L2中。這涉及到很多:snappy網(wǎng)絡(luò)I/O,列數(shù)據(jù)庫(kù)直接在壓縮數(shù)據(jù)上運(yùn)行算法等。利用一些技術(shù)不銷(xiāo)毀你的TLB。最重要的思想是緊緊的抓住計(jì)算機(jī)的體系結(jié)構(gòu),涉及多核CPU,L1/L2,共享的L3,NUMA RAM,從DRAM到芯片數(shù)據(jù)傳輸帶寬/延遲,DRAM緩存的DiskPages,DirtyPages,流經(jīng)CPU<->DRAM<->NIC的TCP包。
CPU
CPU過(guò)載
內(nèi)容切換—>單核上開(kāi)啟的線(xiàn)程過(guò)多、Linux調(diào)度器、系統(tǒng)調(diào)用太多等
IO等待—>所有的CPU在同速等待
CPU緩存:緩存數(shù)據(jù)是一個(gè)細(xì)粒度進(jìn)程,為了在多個(gè)實(shí)例與不同的值數(shù)據(jù)之間找到正確的平衡,來(lái)保持緩存數(shù)據(jù)的一致性和繁重同步。
底板吞吐量(Backplane throughput)
網(wǎng)絡(luò)
NIC刷爆、IRQ飽和、軟中斷占用掉了100%CPU
DNS查詢(xún)
數(shù)據(jù)包丟失
網(wǎng)絡(luò)中存在預(yù)期外的路由
訪(fǎng)問(wèn)網(wǎng)絡(luò)磁盤(pán)
共享SAN
服務(wù)器故障—>無(wú)法從服務(wù)處得到響應(yīng)
進(jìn)程
測(cè)試時(shí)間
開(kāi)發(fā)時(shí)間
團(tuán)隊(duì)規(guī)模
預(yù)算
代碼債務(wù)
內(nèi)存
內(nèi)存不足—>殺死進(jìn)程,切換到swap,掛起
內(nèi)存不足導(dǎo)致磁盤(pán)交換(與swap相關(guān))
記憶庫(kù)開(kāi)銷(xiāo)過(guò)大(Memory library overhead)
內(nèi)存分片(在Java中需要會(huì)因?yàn)閮?nèi)存回收而停頓;在C中,malloc總是開(kāi)始分配內(nèi)存)
【軟件系統(tǒng)開(kāi)發(fā)常見(jiàn)的十大瓶頸】相關(guān)文章:
2022金蝶軟件結(jié)賬常見(jiàn)問(wèn)題匯總03-24
工程項(xiàng)目結(jié)算審計(jì)十大常見(jiàn)問(wèn)題及對(duì)策03-22
用友財(cái)務(wù)軟件28個(gè)常見(jiàn)問(wèn)題解答09-04
煎餅的常見(jiàn)做法09-04
街舞的十大種類(lèi)07-29
引體向上常見(jiàn)錯(cuò)誤07-31
常見(jiàn)公文寫(xiě)作范文03-26
英語(yǔ)常見(jiàn)近義詞辨析02-07
啞鈴健身常見(jiàn)誤區(qū)09-05