首先傀履,Apollo是一個配置管理系統(tǒng), 可以簡單了解下俗冻。
配置中心:Apollo入門了解 - 知乎 (zhihu.com)
本身使用它的目的就是可以讓線上的程序可以在不發(fā)布的情況下亦歉,做一些形為的更改。普遍用于灰度上線功能牍鞠,開關等卖丸。我們遇到的問題是,當配置修改后胯努,5~10分鐘左右應用就會內存爆滿牢裳,被容器Kill,重啟叶沛。
由于配置本身修改不頻繁蒲讯,而且本身是一個定時任務的程序,就沒有高優(yōu)的處理該問題灰署;也讓團隊內的同學排查過判帮,結果都沒找到具體的原因。
這兩天五一假期前溉箕,有點時間自己去排查了一下晦墙。結果發(fā)現是一個低級錯誤引起的。
原因是肴茄,針對一個單獨的業(yè)務模塊 自定義了一個復雜實際的配置項晌畅,通過監(jiān)聽Apollo的變更事件的方式,來觸發(fā)該復雜實體的反序列化寡痰。本身事件添加Listener是期望在類初使化的時候做抗楔。這里使用了Spring的@PostConstruct注解棋凳。
然而這個方法是Public的,程序員偷懶连躏,在業(yè)務代碼中也調用了該方法剩岳。隨著應用上線線時間的增加,最終導致監(jiān)聽器數量逐漸累積入热,每天大概增加25W次拍棕。也就是說,一旦配置變更勺良,該監(jiān)聽器會被執(zhí)行十萬甚至百萬次绰播,最終CPU資源耗盡,內存耗盡尚困。應用被Kill幅垮,重啟。
本身是一個低級的錯誤尾组,而且測試環(huán)境沒有線上的業(yè)務量,不能重現示弓。只有沉下來看代碼才能發(fā)現問題讳侨。當然,沒有了上帝視角奏属,可以從表象上去定位跨跨。比如,監(jiān)聽器的方法調用量為什么被調用那么多次囱皿,近而一步一步的找到root case.
很多時候我們都在權衡一個事情的勇婴,優(yōu)先級,處理一個問題的代價嘱腥。避開公司投入耕渴,處理這種問題才是對個最有幫助的。
Apollo配置修改后為啥應用就重啟
?著作權歸作者所有,轉載或內容合作請聯系作者
- 文/潘曉璐 我一進店門靖秩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來须眷,“玉大人竖瘾,你說我怎么就攤上這事∑獍郑” “怎么了准浴?”我有些...
- 正文 為了忘掉前任葡公,我火速辦了婚禮,結果婚禮上条霜,老公的妹妹穿的比我還像新娘催什。我一直安慰自己,他們只是感情好宰睡,可當我...
- 文/花漫 我一把揭開白布蒲凶。 她就那樣靜靜地躺著,像睡著了一般拆内。 火紅的嫁衣襯著肌膚如雪旋圆。 梳的紋絲不亂的頭發(fā)上,一...
- 文/蒼蘭香墨 我猛地睜開眼敏弃,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了蹬癌?” 一聲冷哼從身側響起权她,我...
- 正文 年R本政府宣布,位于F島的核電站第步,受9級特大地震影響疮装,放射性物質發(fā)生泄漏。R本人自食惡果不足惜粘都,卻給世界環(huán)境...
- 文/蒙蒙 一廓推、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧翩隧,春花似錦樊展、人聲如沸。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至淑仆,卻和暖如春藤肢,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背糯景。 一陣腳步聲響...
推薦閱讀更多精彩內容
- 起因 你是否碰到過如下場景: 在測試環(huán)境未發(fā)現的BUG轧粟,上了生產環(huán)境之后偶現策治,但同樣由于缺少調試信息,無法定位問題...
- 配置中心 配置中心簡介 說到配置中心兰吟, 大家可能都不陌生通惫。我們攜程現在用的qconfig, 就是一個典型的配置中心...
- 關鍵字 :Apollo源碼履腋、apollo-configservice模塊 上一篇文章 Apollo 原理分析[ht...
- Apollo(阿波羅)是攜程開源的分布式配置中心,能夠集中化管理應用不同環(huán)境、不同集群的配置遵湖,支持配置熱發(fā)布并實時...
- 導讀 本篇文章適用于對Apollo有一定使用經驗或者一定了解的人群 關鍵字 :Apollo源碼悔政、apollo-cl...