色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

華為云數據庫GaussDB(for Cassandra)揭秘:內存異常增長的排查經

科技說i ? 來源:科技說i ? 作者:科技說i ? 2022-12-02 09:13 ? 次閱讀

內存異常增長的排查經歷

背景介紹

華為云數據庫GaussDB(for Cassandra)是一款基于計算存儲分離架構,兼容Cassandra生態的云原生NoSQL數據庫;它依靠共享存儲池實現了強一致,保證數據的安全可靠。核心特點是:存算分離、低成本、高性能。

問題描述

GaussDB(for Cassandra)自研架構下遇到一些挑戰性問題,比如cpu過高,內存泄漏,內存異常增長,時延高等問題,這些也都是開發過程中遇到的典型問題。分析內存異常增長是一個比較大的挑戰,內存的異常增長對于程序來說是一個致命的問題,因為其可能觸發OOM,進程異常宕機,業務中斷等結果,所以對內存進行合理的規劃使用及控制就顯得尤為重要。通過調整cache容量,bloom過濾器大小,以及memtable大小等等,實現性能提升,讀寫時延改善等效果。

在線下測試過程中發現內核在長時間運行后,內存只增不減,出現異常增長的情況,懷疑可能存在內存泄漏。

分析&驗證

首先根據內存使用,將內存分為堆內和堆外兩個部分,分別進行該兩塊內存的分析。確定有問題的內存是堆外內存,進一步對堆外內存分析。引入更高效的內存管理工具tcmalloc,解決內存異常增長問題。下面為具體分析驗證過程。

確定內存異常區域

使用jdk的jmap命令和Cassandra的監控(配置jvm.memory.*監控項)等方法,每隔1min采集jvm的堆內內存及進程整體內存。

啟動測試用例,直到內核的整體內存達到上限。分析采集到的堆內內存和進程內存變化曲線,發現其堆內內存仍保持相對穩定,未出現一直持續上漲,但期間內核的整體內存仍然在持續上漲,兩者的增長曲線不符。即問題應該發生在堆外內存。

堆外內存分析驗證

glibc內存管理

使用pmap命令打印進程的內存地址空間分布,發現有大量的64MB的內存塊和許多內存碎片,該現象與glibc的內存分配方式有關。堆外內存的使用和進程整體的內存增長趨勢相近,初步懷疑該問題是由堆外內存導致。加之glibc歸還內存的條件苛刻,即內存不易及時釋放,內存碎片多,猜測問題和gblic有關系。當內存碎片過多,空閑內存浪費嚴重,最終進程內存的最大使用量會出現超過預期計劃最大值的可能,甚至出現OOM。

tcmalloc內存管理

引入tcmalloc內存管理器,代替glibc的ptmalloc內存管理方式。減少過多的內存碎片,提高內存使用效率,本次分析驗證采用gperftools-2.7源碼進行tcmalloc的編譯。運行相同的測試用例,發現內存仍在持續上漲,但是上漲幅度較之前降低,通過pmap打印出該內存地址分布情況,發現之前的小內存塊和內存碎片顯著減小,說明該工具有一定優化效果,印證了前面提到內存碎片過多的猜測。

但是內存異常增長的問題仍然存在,有點像是tcmalloc的回收不及時或者不回收導致。實際上tcmalloc的內存回收是比較"reluctant"的,主要是為了當再次需要內存申請時可以直接使用,減少系統調用次數,提高性能。基于此原因,下來進行手動調用其釋放內存接口releasefreememory。發現效果不明顯,原因暫時未知(可能確實存在沒待釋放的空閑內存)。

手動觸發tcmalloc的releasefreememory接口

為驗證該問題,通過設置cache容量的方式進行。

1.先設置cache的容量為6GB,然后將讀請求壓起來,使cache的6GB容量填滿

2.修改cache的容量為2GB,為快速是內存釋放,手動調用tcmalloc的releasefreememory接口,發現沒有效果,推測采用tcmalloc之后,內存仍然一直上漲不下跌的原因可能與該接口的有關。

3.在releasefreememory接口內部的多個地方記錄日志,然后啟動進程再次測試,發現一處報錯是在進行系統調用madvise時有出現失敗。

代碼位置:

pYYBAGOIraKAFw1_AAB8HgoiHF0667.png

報錯日志信息

poYBAGOIramAeofYAABlttAwRyM875.png

1.通過該處的調用失敗,分析代碼。發現tcmalloc的內存釋放邏輯是“round-robin”,即中間有一個span釋放失敗,則后續待釋放的span被終止,releasefreememory邏輯調用結束。這個就和前面的現象吻合,執行完releasefreememory接口后基本沒有效果,發現每次都是在釋放了幾十MB時,因為該接口的調用失敗導致釋放邏輯終止。

2.再次分析該系統調用madvise失敗原因。通過給內核的該方法打patch,發現其失敗原因是因為傳入的地址塊對應的內存狀態是LOCKED狀態。導致系統調用失敗,報錯為非法參數

3.內存為LOCKED狀態,和該狀態相關的有代碼調用mlock系統方法、系統的ulimit配置。分析相關代碼未發現異常點。查詢系統ulimit配置,發現max locked memory為unlimited。修改其配置為16MB,重啟Cassandra進程,再次測試,發現內存釋放效果顯著。

4.繼續運行測試,發現內存持續上漲的情況消失。在業務持續存在的情況下,內存會上漲到最高,不再上漲,保持平穩,符合內存計劃使用量。業務壓力減少甚至停止后,內存出現緩慢下降趨勢。

解決&總結

1.引入tcmalloc工具,優化內存管理。比較優秀的內存管理器有Google的tcmalloc和Facebook的jemalloc等

2.修改系統的max locked memory參數配置。

合理分配進程需要使用內存的最大值,并預留一定容量,對于不符合預期增長的內存需要進一步分析。內存相關問題和程序相關性較強。系統的關鍵配置需謹慎,要評估其影響。同時排查了類似的所有配置。

增加releasefreememory的命令,后端進行調用,優化tcmalloc hold內存不釋放問題。不過releasefreememory命令的執行會鎖整個pageHeap,可能導致內存分配請求被hang,所以需要小心執行。

后端增加可動態配置tcmalloc_release_rate的參數,來調整tcmalloc將內存交還給操作系統的頻率。該值的合理范圍是[0-10],0表示永遠不交還,值越大,表示交還的頻率越高,默認值是1。

結語

本文通過分析開發過程中遇到的內存增長問題,使用更優秀的內存管理工具,以及更細粒度的內存監控,更直觀的監控數據庫運行期間的內存狀態,確保數據庫平穩高性能運行。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據庫
    +關注

    關注

    7

    文章

    3807

    瀏覽量

    64421
  • 華為云
    +關注

    關注

    3

    文章

    2540

    瀏覽量

    17441
收藏 人收藏

    評論

    相關推薦

    華為榮登Gartner?數據庫挑戰者象限

    近日,全球知名的信息技術研究與顧問公司Gartner?正式發布了其備受矚目的2024年度《數據庫管理系統魔力象限報告》。在這份權威報告中,華為憑借其卓越的表現成功入選挑戰者象限,彰
    的頭像 發表于 12-31 13:57 ?68次閱讀

    托管可以操作數據庫嗎?安全性如何

    托管可以操作數據庫。在托管環境中,開發者可以通過使用服務提供商提供的API或SDK來連接并操作
    的頭像 發表于 12-11 13:35 ?83次閱讀

    數據庫主機哪個好一點?

    數據庫主機哪個好一點?主機和數據庫各有優勢,選擇哪個更好取決于具體需求。
    的頭像 發表于 12-04 13:50 ?135次閱讀

    數據庫服務器哪個便宜一些?

    服務器的價格區間相對更廣泛,因為用戶可以根據實際需求選擇不同配置和性能的服務器。而數據庫的價格則更多地依賴于數據庫類型和規格。在相同配置下,
    的頭像 發表于 11-12 10:55 ?189次閱讀

    數據庫數據恢復—通過拼接數據庫碎片恢復SQLserver數據庫

    一個運行在存儲上的SQLServer數據庫,有1000多個文件,大小幾十TB。數據庫每10天生成一個NDF文件,每個NDF幾百GB大小。數據庫包含兩個LDF文件。 存儲損壞,數據庫
    的頭像 發表于 10-31 13:21 ?230次閱讀
    <b class='flag-5'>數據庫</b><b class='flag-5'>數據</b>恢復—通過拼接<b class='flag-5'>數據庫</b>碎片恢復SQLserver<b class='flag-5'>數據庫</b>

    數據庫可以租用嗎?完整租用流程來了

    數據庫是可以租用的,這是一種合法且便捷的數據存儲和管理方式。數據庫服務提供商提供的各種服
    的頭像 發表于 10-28 09:54 ?174次閱讀

    科技報到:大模型時代下,向量數據庫的野望

    科技報到:大模型時代下,向量數據庫的野望
    的頭像 發表于 10-14 17:18 ?262次閱讀

    Oracle數據恢復—異常斷電后Oracle數據庫報錯的數據恢復案例

    Oracle數據庫故障: 機房異常斷電后,Oracle數據庫報錯:“system01.dbf需要更多的恢復來保持一致性,數據庫無法打開
    的頭像 發表于 09-30 13:31 ?309次閱讀
    Oracle<b class='flag-5'>數據</b>恢復—<b class='flag-5'>異常</b>斷電后Oracle<b class='flag-5'>數據庫</b>啟<b class='flag-5'>庫</b>報錯的<b class='flag-5'>數據</b>恢復案例

    一文詳解企業上數據庫是干嘛的

    業上數據庫是企業將其數據庫系統從傳統的本地數據中心遷移到由第三方服務提供商管理的遠程服務器上的過程。這樣做的目的通常是為了提高
    的頭像 發表于 09-13 11:49 ?341次閱讀

    恒訊科技分析:數據庫rds和redis區別是什么如何選擇?

    數據庫RDS(Relational Database Service)和Redis是兩種不同類型的數據庫服務,它們有各自的特點和適用場景: 1、數據模型:RDS是一種關系型
    的頭像 發表于 08-19 15:31 ?403次閱讀

    DTCC2024前瞻:天翼數據庫專家共話TeleDB發展藍圖

    數據庫是IT基礎設施領域重要的組成部分,天翼緊跟數據庫行業技術方向與創新趨勢,強化核心技術的自研實力,助力企業釋放數據價值。在8月22日-24日的第15屆中國
    的頭像 發表于 08-19 14:53 ?365次閱讀
    DTCC2024前瞻:天翼<b class='flag-5'>云</b><b class='flag-5'>數據庫</b>專家共話TeleDB發展藍圖

    華為GaussDB數據庫基礎版發布:旗艦性能、價格下降超60%

    高性價比:相比企業版,華為 GaussDB 基礎版價格大幅下調(降幅達 60%-70%),且支持全場景數據壓縮,具有“超高壓縮比”,性能影響僅為 5%-10%,存儲成本降低 50%。
    的頭像 發表于 05-07 14:21 ?634次閱讀

    華為多模數據庫 GeminiDB 架構與應用實踐直播問答實錄

    多模數據庫作為一種新興的數據管理解決方案,正在受到越來越多的關注。而華為多模數據庫 GeminiDB 基于云原生
    的頭像 發表于 04-08 18:25 ?1166次閱讀

    選擇 KV 數據庫最重要的是什么?

    經常有客戶提到 KV 數據庫,但卻偏偏“不要 Redis”。比如有個做安全威脅分析平臺的客戶,他們明確表示自己對可靠性要求非常高,需要的不是開源 Redis 這種內存緩存,而是 KV 數據庫
    的頭像 發表于 03-28 22:11 ?704次閱讀
    選擇 KV <b class='flag-5'>數據庫</b>最重要的是什么?

    GaussDB(for Redis) 特性揭秘:多租戶管理

    華為 GaussDB(for Redis)持續完善企業級增強特性,是名副其實的 "Redis Plus" ,其中很經典的企業級特性是 多租戶能力 ,支持添加只讀賬號、讀寫賬號,且具備強大的 DB
    的頭像 發表于 03-28 22:06 ?751次閱讀
    <b class='flag-5'>GaussDB</b>(for Redis) 特性<b class='flag-5'>揭秘</b>:多租戶管理
    主站蜘蛛池模板: 日本亚洲精品色婷婷在线影院| 国产午夜精品鲁丝片| 调教玩弄奶头乳夹开乳震动器| 久久是热频国产在线| 亚色九九九全国免费视频| 干丝袜美女| 日韩av国产av欧美天堂社区 | 公么我好爽再深一点| 嫩草电影网嫩草影院| 正能量不良WWW免费窗口| 久草大| 中国videos1314tv| 麻豆精品乱码WWW久久密| 最近的2019中文字幕HD| 久久国产精品自线拍免费| 诱咪视频免费| 麻豆乱码一卡二卡三卡视频| 99re久久免费热在线视频手机| 两个客户一起吃我的奶| 757一本到午夜宫| 欧美阿v在线天堂| xxx成熟xxx| 涩涩涩涩爱网站| 国产亚洲精品久久久久久鸭绿欲| 亚洲AV无码专区国产乱码网站| 国内免费视频成人精品| 一个人HD在线观看免费高清视频| 久久国产免费一区二区三区| 51vv视频社区| 强开乳罩摸双乳吃奶视频| 高h肉文np| 亚洲欧美人成视频在线| 久久麻豆国产国产AV| 97视频在线观看免费播放| 日本久久久久亚洲中字幕| 国产精品黄色大片| 亚洲熟女丰满多毛XXXXX| 美女脱得只剩皮肤| 岛国片免费看| 一个人在线观看免费高清视频在线观看| 久久偷拍国2017的|