性能瓶頸

單節點瓶頸分析

增長併發和吞吐

併發:單機多 CPU、單CPU多 Core、單 core 超線程 IO密集型應用: 多進程->多線程->異步->協程?? CPU密集型應用:多進程-->多線程 ?? 方法:算法

  • 異步編程:回調機制和事件驅動
  • 協程:Ucontext(in glibc)、Bthread(in baidurpc)M:N協程

去除沒必要要動做

減小網絡重連(長鏈接) 下降鏈接數(鏈接池) 減小線程切換(線程池) 減小內存分配和釋放(內存池) 減小耗時的操做和運算 (memset,浮點運算,除法,指數,對數運算,慎用stl) 在線轉離線 (離線生成詞典,如推薦)編程

避免衝突

多線程無鎖算法:無鎖共享數據、無鎖數據結構、Copy on Write Hash 衝突:桶如何分配、如何減小 hash 衝突 合理使用鎖:鎖的時間儘量短、下降衝突機率、避免死鎖網絡

IO優化

隨機寫--》順序寫 順序寫磁盤效率比隨機寫內存還要高,這是Kafka高 吞吐率的一個很重要的保證數據結構

集羣瓶頸

下降數據傳輸量: 數據壓縮:CPU 與網絡 IO 權衡 , 減小交互次數 打包訪問 減小跨機器 IO多線程

均衡 cache併發

相關文章
相關標籤/搜索