• <big id="r05a9"><nobr id="r05a9"><big id="r05a9"></big></nobr></big>
      1. 嘉興專(zhuān)業(yè)的AI軟件外包與定制開(kāi)發(fā)、手機APP及小程序開(kāi)發(fā)服務(wù)公司
        聯(lián)系電話(huà): 13396739763 (微信同)
        探索最新AI技術(shù)與深度解決方案 | 獲取專(zhuān)業(yè)軟件開(kāi)發(fā)的經(jīng)驗智慧

        軟件開(kāi)發(fā)中常見(jiàn)的十大系統瓶頸

        在平時(shí)開(kāi)發(fā)工作中,你可能在開(kāi)發(fā)的各方面遭遇瓶頸,比如性能、系統等。你有對它們進(jìn)行過(guò)歸納嗎?不妨來(lái)看看本文對這些系統瓶頸的歸類(lèi)吧!

        在Zen And The Art Of Scaling - A Koan And Epigram Approach中,Russell Sullivan提出了一個(gè)非常有趣的總結:軟件開(kāi)發(fā)常見(jiàn)的20個(gè)傳統的系統瓶頸,這聽(tīng)起來(lái)像是說(shuō)有20個(gè)故事情節,并且依賴(lài)于你如何策劃這些故事,或許都是真的,但唯有實(shí)踐才知道它們帶給我們的酸甜苦辣。

        有一天,Aurelien Broszniowski給我發(fā)了一份電子郵件,把這些瓶頸用列表的方式展示出來(lái)。在接下來(lái)的交談過(guò)程中,我又把該列表抄送給了Russell,Russell對此列表進(jìn)行了整理。

        Russell說(shuō):“我真希望在年輕時(shí)看到這樣的一份列表”。伴隨著(zhù)經(jīng)驗的增長(cháng)、項目的增多、解決各種不同類(lèi)型的問(wèn)題和不斷總結各種經(jīng)驗教訓,你會(huì )在這份列表上添加更多的東西。所以,當你在閱讀該份列表時(shí)就像是在回顧一個(gè)個(gè)故事片段。

        數據庫

        工作任務(wù)內存超過(guò)可用的RAM內存長(cháng)/短查詢(xún)寫(xiě)入沖突大連接(join)占用內存

        虛擬化

        共享一個(gè)HDD、磁盤(pán)尋死(disk seek death)在云端網(wǎng)絡(luò )I/O波動(dòng)

        編程

        線(xiàn)程:死鎖、調試、非線(xiàn)性擴展等事件驅動(dòng)編程:callback()過(guò)于復雜、如何在函數調用中存儲有狀態(tài)等缺乏調優(yōu)、跟蹤、日志等單模塊不可擴展、單點(diǎn)故障(SPOF:Single Point Of Failure)、非橫向擴展等有狀態(tài)應用程序設計問(wèn)題:開(kāi)發(fā)的應用程序只在自己的機器行運行正常,或者只是在幾個(gè)人測試的時(shí)候正常(沒(méi)有經(jīng)歷壓力測試)。算法過(guò)于復雜相關(guān)服務(wù),例如DNS查找以及其他可能屏蔽的服務(wù)堆??臻g

        磁盤(pán)

        訪(fǎng)問(wèn)本地磁盤(pán)隨機訪(fǎng)問(wèn)磁盤(pán)I/O磁盤(pán)碎片當SSD寫(xiě)入的數據大于SSD容量時(shí),性能會(huì )下降

        OS

        Fsync飽和,Linux緩沖區填塞(Fsync flushing, linux buffer cache filling up)TCP緩沖區太小文件描述符限制功率分配(Power budget)

        緩存

        沒(méi)使用memcached(數據庫崩潰)HTTP中:headers、etags、沒(méi)有使用gzip壓縮等。沒(méi)有充分利用瀏覽器緩存字節碼緩存(如PHP)L1/L2緩存:這是個(gè)令人頭疼的大瓶頸。把關(guān)鍵并且經(jīng)常訪(fǎng)問(wèn)的數據存儲在L1/L2中。這涉及到很多:snappy網(wǎng)絡(luò )I/O,列數據庫直接在壓縮數據上運行算法等。利用一些技術(shù)不銷(xiāo)毀你的TLB。最重要的思想是緊緊的抓住計算機的體系結構,涉及多核CPU,L1/L2,共享的L3,NUMA RAM,從DRAM到芯片數據傳輸帶寬/延遲,DRAM緩存的DiskPages,DirtyPages,流經(jīng)CPU<->DRAM<->NIC的TCP包。

        CPU

        CPU過(guò)載內容切換—>單核上開(kāi)啟的線(xiàn)程過(guò)多、Linux調度器、系統調用太多等IO等待—>所有的CPU在同速等待CPU緩存:緩存數據是一個(gè)細粒度進(jìn)程,為了在多個(gè)實(shí)例與不同的值數據之間找到正確的平衡,來(lái)保持緩存數據的一致性和繁重同步。底板吞吐量(Backplane throughput)

        網(wǎng)絡(luò )

        NIC刷爆、IRQ飽和、軟中斷占用掉了100%CPUDNS查詢(xún)數據包丟失網(wǎng)絡(luò )中存在預期外的路由訪(fǎng)問(wèn)網(wǎng)絡(luò )磁盤(pán)共享SAN服務(wù)器故障—>無(wú)法從服務(wù)處得到響應

        進(jìn)程

        測試時(shí)間開(kāi)發(fā)時(shí)間團隊規模預算代碼債務(wù)

        內存

        內存不足—>殺死進(jìn)程,切換到swap,掛起內存不足導致磁盤(pán)交換(與swap相關(guān))記憶庫開(kāi)銷(xiāo)過(guò)大(Memory library overhead)內存分片(在Java中需要會(huì )因為內存回收而停頓;在C中,malloc總是開(kāi)始分配內存)

        partners
        partners
        partners
        partners
        partners
        partners
        partners
        partners
        三级国产国语三级在线蔓延|欧美人与动人物牲交|欧美A级毛欧美1级A大片免费播|国产无套乱子伦精彩|91香蕉高清国产线观看免费
      2. <big id="r05a9"><nobr id="r05a9"><big id="r05a9"></big></nobr></big>