一次流量稍高導致web專案慢的問題 解決

2021-09-09 04:43:41 字數 711 閱讀 3879

專案上線後,使用者越來越多,有一天出現乙個issue:使用者訪問特別慢。

查系統狀態是什麼情況,首先確定外部總體現象

壓力是有些

但應該不至於很慢

看下發末尾的流量,也不是特高。(忽略接近末尾的峰值)

然後追查node 節點log對應時間點(8:00pm)的log

獲取個頁面不需要資料庫都要秒級別。有些js 要幾秒!

cpu 奇怪的高

逐個時間點與ga同時看

無特別大的波動。

後續分析了錯誤的log

node1

2015-08-04 21:10:53 +08:00: fatal error: js allocation failed - process out of memory

...

node2

...2015-08-04 23:00:50 +08:00: fatal error: call_and_retry_2 allocation failed - process out of memory

最終發現時記憶體不足導致。

綜此,估計是mem 占用高,而湧入的流量讀取靜態檔案,在disk io mem 之間由於不夠記憶體,經常swap。導致等待特別長。同時導致處理乙個connection request 特別長,湧入的流量消耗了大量cpu 資源去維持。

優化措施後續更新。

記一次EventBus記憶體洩露導致的專案問題

今天遇到乙個很尷尬的問題,就是eventbus的使用過程中,在post乙個event後,於此同時,在接收event的方法中打斷點監控event的接收。這個時候我遇到很尷尬的問題,會重複接收到很多次的event事件 我當前所用的開發框架是支援將業務,資料更新,檢視更新從activity中抽離,在act...

記一次tp喚醒函式異常導致的lcd喚醒慢

機器休眠後,按電源鍵喚醒,2s多螢幕才亮,檢視核心資訊,沒發現什麼報錯資訊。先檢查lcd的初始化 去掉多餘的延時,喚醒時間依然很長。繼續分析核心資訊,從按下電源鍵到開背光,用時2s多,發現tp喚醒時間較長。直接修改tp的i2c位址 或者拔掉tp 讓tp驅動不跑,喚醒時間就正常了。繼續分析tp的喚醒函...

記一次Redis bitmap導致的miss問題

redis bitmaps 基礎概念 redis 記憶體淘汰機制 大致需求 指令碼批量匯入使用者資料到redis中,使用bitmap標記使用者是否在匯入的白名單中。使用者量級 億。key使用了分片處理,把key分成了10w個,每個key占用 1億 10w 1000 個bit。理想是key1用於標記u...