某個邊緣的功能,需要將某些資料存入資料庫,由於功能邊緣且資料較少,存入頻率為5秒儲存一次,一次儲存10條;儲存的資料用vector儲存,往集合裡放,正常情況下量極少也沒出問題。
然後在某一天,突然發現服務容災狀態了,根據經驗,不是資料庫掛了就是後端某應用掛了,檢視日誌,發現是這個資料量過多,結果資料入庫又這麼慢,於是記憶體就爆的了
怎麼解決?
1.佇列別光加入,超過10000時放棄,以免影響主業務
2.增加入庫速度,一次處理1000條
其實 的本質也是因為沒配置佇列大小,無界佇列過慢導致,雖然沒有撐爆記憶體,雖然這個連線裡的是執行緒池佇列,本文的是普通容器(邏輯上是佇列,但是容器不是)所以說,佇列,還是有界的好
selinux導致故障一例
selinux導致故障一例 這樣的報錯還是第一次遇到,排查過程沒有頭緒,一直糾結在child setpgid這個地方,還好在google過程中看到有人在設定selinux的時候的相關案例,於是想到從這方面入手。原因為selinux開啟導致的,但是比較詭異的是從別的terminal ssh 跳轉過去之...
Java記憶體洩露一例
這段時間重構專案,把以前的 一點點拿出來看,還是很發現了幾個問題.其中記憶體洩露尤其隱蔽.這裡給出乙個例子 定義類 package com.hintsoft.test public class systemobj public void test package com.hintsoft.test ...
記一次Excel匯出導致記憶體耗盡的問題
php fatal error allowed memory size of 298844160 bytes exhausted tried to allocate 262144 bytes 一開始首先想到是excel匯出時很吃記憶體,資料一多就容易將記憶體耗盡,於是先從 上做優化,取完資料後將無用...