面試實踐AND面經熱點題目總結

1、對于Rocketmq消息積壓、丟失如何解決?

消息積壓原因以及解決方案
🎯 產生原因:
消費者處理能力弱,消費速度遠低于生產速度;

網絡不穩定,消費者拉取消息失敗;

消費端異常(如處理邏輯阻塞、宕機);

消費者線程數過少或消費邏輯中存在阻塞操作。

? 解決方案:
方法 說明

  1. 增加消費者實例數 RocketMQ 是天然支持水平擴展的,多實例消費同一個 Consumer Group 可以分擔壓力、如果消費實例大于隊列Message Queue,就需要擴容Message Queue數量。
  2. 提高消費線程數 DefaultMQPushConsumer#setConsumeThreadMax(int) 調整線程數,提升并發消費能力
  3. 異步消費、批量消費 將消費邏輯異步化或開啟批量消費(如一次拉取多條消息)以提升處理效率
  4. 降低發送速率(限流) 在生產端做速率控制,避免瞬時高并發導致積壓
  5. 提高消費者異常容錯能力 避免因為單條消息異常導致消費阻塞,如使用 try-catch 包裹消費邏輯并記錄錯誤
  6. 利用監控預警 RocketMQ 提供消息堆積監控(通過 accumulationCount 指標),及時報警、自動擴容

消息丟失解決方案:
一、預防性原因以及解決方案(防止丟失)

消息丟失的常見原因:

場景可能原因
生產端丟失消息發送失敗未處理;未等待 Broker 確認
Broker 丟失異步刷盤;Broker 崩潰前消息未持久化
消費端丟失消費成功但 offset 提交失敗;消費失敗但 offset 提交了

解決方案

  1. 生產者防丟措施:設置請求確認機制、使用同步發送、啟用發送重試設置 setRetryTimesWhenSendFailed()來保證消息的可靠傳遞
  2. Broker持久化防丟措施:消息持久化、同步刷盤、使用主從模式。
    • 同步刷盤:在消息達到Broker的內存之后,必須刷到commitLog日志文件中才算成功,然后返回Producer數據已經發送成功。
    • 異步刷盤:異步刷盤是指消息達到Broker內存后就返回Producer數據已經發送成功,會喚醒一個線程去將數據持久化到CommitLog日志文件中。
  3. 消費者防丟措施:Consumer保證消息成功消費的關鍵在于確認的時機,不要在收到消息后就立即發送消費確認,而是應該在執行完所有消費業務邏輯之后,再發送消費確認、異常消費時不要返回成功狀態、設置最大重試次數,消費失敗消息自動轉入死信隊列,便于人工補償。

二、補救性解決方案(已丟失處理)

  1. 消息溯源
    生產者日志:消息發送日志落盤
  2. 補償機制
    定時校對:生產消費對賬
  3. 死信處理
    DLQ監控:自動告警+人工處理
    面試時候總結的來說:主要通過…機制預防消息丟失,同時設計了…方案應對極端情況下的消息丟失"

2、

一、消息積壓解決方案

3、JVM 常用工具命令大全

一、圖形化工具

  1. JConsole
    啟動命令:
jconsole

功能:
監控堆內存、線程、類加載情況
查看MBean信息
監控CPU使用率
支持遠程連接JMX
2. VisualVM
啟動命令:

jvisualvm

功能:
更強大的性能分析功能
支持插件擴展(如GC插件)
線程轉儲分析
內存采樣和CPU分析
支持快照比

二、命令行工具

  1. jstat - JVM統計監控工具
    常用命令格式:
jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]

常用選項:
選項 說明
-class 類加載統計
-gc GC堆狀態
-gccapacity 各區容量
-gcutil GC統計匯總
-gccause 最近GC原因
-gcnew 新生代統計
-gcold 老年代統計

每1秒打印一次GC情況,共打印5次

jstat -gcutil -h5 <pid> 1000 5

帶時間戳輸出

jstat -gc -t <pid> 1000
  1. jstack - 線程堆棧分析工具
    命令格式:
jstack [-l] [-F] <pid>

常用參數:
參數 說明
-l 長列表,打印鎖的附加信息
-F 強制dump(當jstack無響應時使用)
-m 混合模式(Java和Native幀)

# 獲取線程dump并輸出到文件
jstack -l 1234 > thread_dump.txt
# 查找CPU高的線程(配合top命令使用)
top -H -p <pid>
printf "%x\n" <nid>  # 將線程ID轉為16進制
jstack <pid> | grep -A 20 <nid_hex>
  1. jmap - 內存分析工具
    命令格式:
bash
jmap [option] <pid>

常用選項:
選項 說明
-heap 顯示堆概要信息
-histo[:live] 顯示堆中對象統計(live表示只統計存活對象)
-dump: 生成堆轉儲快照
-finalizerinfo 顯示等待finalize的對象
示例:

# 生成堆dump文件(生產環境慎用,會STW)
jmap -dump:format=b,file=heap.hprof 1234# 顯示存活對象統計
jmap -histo:live 1234 | head -20
  1. jinfo - 配置信息工具
    命令格式:
bash
jinfo [option] <pid>

常用功能:

# 查看所有系統屬性
jinfo -sysprops <pid># 查看指定JVM參數
jinfo -flag MaxHeapSize <pid># 動態修改部分參數(僅支持可寫的參數)
jinfo -flag +PrintGCDetails <pid>

四、使用技巧
組合使用示例:

# 快速診斷流程
jps -mlvV | grep <app_name>  # 找PID
jstat -gcutil <pid> 1000 5   # 看GC
jstack <pid> > thread.txt    # 線程分析
jmap -histo:live <pid> | head -20  # 對象統計

生產環境注意事項:

jmap -dump 會導致STW,謹慎使用

優先使用jcmd GC.heap_dump替代jmap

線程dump建議連續做3次(間隔5秒)

使用-F參數時可能造成JVM暫停更久

常用分析流程:

高CPU → top -H → jstack → 16進制線程ID匹配
內存泄漏 → jmap -histo → 分析大對象 → jmap -dump → MAT分析
GC問題 → jstat -gcutil → 分析各分區變化

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/78992.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/78992.shtml
英文地址,請注明出處:http://en.pswp.cn/web/78992.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【KWDB 創作者計劃】使用Docker實現KWDB數據庫的快速部署與配置

【KWDB 創作者計劃】使用Docker實現KWDB數據庫的快速部署與配置 前言一、KWDB介紹1.1 KWDB簡介1.2 主要特點1.3 典型應用場景 二、環境介紹2.1 部署環境要求2.2 本地環境規劃2.3 部署模式 三、部署Docker環境3.1 安裝相關工具3.2 配置Docker軟件源3.3 更新軟件源3.4 安裝Docker…

JWT深度解析:現代Web身份驗證的通行證-優雅草卓伊凡

# JWT深度解析&#xff1a;現代Web身份驗證的通行證 ## 一、JWT的本質與構成 ### 1.1 JWT的定義解析 JWT&#xff08;JSON Web Token&#xff09;是一種**開放標準&#xff08;RFC 7519&#xff09;**&#xff0c;用于在各方之間安全地傳輸信息作為JSON對象。這種信息可以被…

前端緩存踩坑指南:如何優雅地解決瀏覽器緩存問題?

瀏覽器緩存&#xff0c;配置得當&#xff0c;它能讓頁面飛起來&#xff1b;配置錯了&#xff0c;一次小小的上線&#xff0c;就能把你扔進線上 bug 的坑里。你可能遇到過這些情況&#xff1a; 部署上線了&#xff0c;結果用戶還在加載舊的 JS&#xff1b;接口數據改了&#xf…

2022年8月,?韓先超對中移信息進行微服務架構原理(Docker+k8s+DevOps+Go等)培訓

2022年8月&#xff0c;?韓先超對中移信息進行微服務架構原理&#xff08;Dockerk8sDevOpsGo等&#xff09;培訓 2022年8月&#xff0c;在企業數字化轉型和云原生架構加速演進的背景下&#xff0c; 中移信息技術有限公司特別邀請云原生與DevOps領域專家 韓先超老師&#xff0c…

ComfyUI 學習筆記,案例 6 :FLUX 模型文生圖

背景 剛開始了解 Comfy UI 的時候&#xff0c;隨便找了一個資料&#xff0c;對著這篇 《Flux在ComfyUI里的下載與安裝》 進行操作的&#xff0c;下載了這里面的模型到本機。 玩了幾天&#xff0c;大概對 ComfyUI 有了一點了解&#xff0c;知道了 Flux 這是一個模型&#xff0…

Docker + Watchtower 實現容器自動更新:高效運維的終極方案

文章目錄 前言一、Watchtower 簡介二、Watchtower 安裝與基本使用1. 快速安裝 Watchtower2. 監控特定容器 三、Watchtower 高級配置1. 設置檢查間隔2. 配置更新策略3. 清理舊鏡像4. 通知設置 四、生產環境最佳實踐1. 使用標簽控制更新2. 更新前執行健康檢查3. 結合CI/CD流水線 …

從易發性分析到災后規劃,AI大模型如何顛覆傳統地質災害防治?

地質災害是指全球地殼自然地質演化過程中&#xff0c;由于地球內動力、外動力或者人為地質動力作用下導致的自然地質和人類的自然災害突發事件。在降水、地震等自然誘因的作用下&#xff0c;地質災害在全球范圍內頻繁發生。我國不僅常見滑坡災害&#xff0c;還包括崩塌、泥石流…

第37次CCF第三題--模板展開--stringstream讀取字符串

1 a hello 1 b world 2 c $a $b 1 d good $c 1 a hi 1 e good $c1 a hello 1 b world 2 c $a $b 3 c 1 a hi 3 c將會輸出&#xff1a;10 和 7&#xff0c;對應的變量的值為&#xff1a; helloworld hiworld 需要注意的是&#xff0c;在使用間接賦值語句時&#xff0c;在變量的…

深度學習:智能車牌識別系統(python)

這是一個基于opencv的智能車牌識別系統,有GUI界面。程序能自動識別圖片中的車牌號碼,并支持中文和英文字符識別,支持選擇本地圖片文件,支持多種圖片格式(jpg、jpeg、png、bmp、gif)。 下面,我將按模塊功能對代碼進行分段說明: 1. 導入模塊部分 import tkinter as tk…

Missashe考研日記-day35

Missashe考研日記-day35 1 專業課408 學習時間&#xff1a;3h學習內容&#xff1a; 完結撒花&#xff01;&#xff01;今天把OS最后一節的內容學完了&#xff0c;操作系統也算是告一段落了&#xff0c;接下來是計網時間&#xff01;不過計網我是上學期才學過的&#xff0c;當…

【Bootstrap V4系列】學習入門教程之 組件-下拉菜單(Dropdowns)

Bootstrap V4系列 學習入門教程之 組件-下拉菜單&#xff08;Dropdowns&#xff09; 下拉菜單&#xff08;Dropdowns&#xff09;一、Overview 概述二、Accessibility 可訪問性三、Examples3.1 Single button 單按鈕3.2 Split button 分割按鈕 四、Sizing 尺寸 下拉菜單&#x…

紅外遙控與NEC編碼協議詳解

在我們日常生活中&#xff0c;電視遙控器、空調遙控器、風扇遙控器&#xff0c;幾乎都離不開“紅外遙控”這項技術。雖然我們每天都在用&#xff0c;但你知道里面是怎么通信的嗎&#xff1f;本篇文章將帶你了解紅外遙控的工作原理&#xff0c;重點解析目前應用最廣泛的紅外編碼…

深入剖析 I/O 復用之 select 機制

深入剖析 I/O 復用之 select 機制 在網絡編程中&#xff0c;I/O 復用是一項關鍵技術&#xff0c;它允許程序同時監控多個文件描述符的狀態變化&#xff0c;從而高效地處理多個 I/O 操作。select 作為 I/O 復用的經典實現方式&#xff0c;在眾多網絡應用中扮演著重要角色。本文…

【Linux系列】目錄大小查看

&#x1f49d;&#x1f49d;&#x1f49d;歡迎來到我的博客&#xff0c;很高興能夠在這里和您見面&#xff01;希望您在這里可以感受到一份輕松愉快的氛圍&#xff0c;不僅可以獲得有趣的內容和知識&#xff0c;也可以暢所欲言、分享您的想法和見解。 推薦:kwan 的首頁,持續學…

《AI大模型應知應會100篇》第48篇:構建企業級大模型應用的架構設計

第48篇&#xff1a;構建企業級大模型應用的架構設計 摘要&#xff1a;本文將提供企業級大模型應用的端到端架構設計方案&#xff0c;從系統設計原則到技術棧選擇&#xff0c;從高可用保障到安全合規&#xff0c;全面覆蓋構建穩健、可擴展、安全的大模型應用所需的工程實踐。適合…

人協同的自動化需求分析

多人協同的自動化需求分析是指通過技術工具和協作流程&#xff0c;讓多個參與者&#xff08;如產品經理、開發人員、測試人員等&#xff09;在需求分析階段高效協作&#xff0c;并借助自動化手段提升需求收集、整理、驗證和管理的效率與質量。以下是其核心要點&#xff1a; 1. …

【戰略合作】開封大學_閥門產業學院+智橙PLM

12月20日&#xff0c;在核電廠閥門系列團體標準啟動會上&#xff0c;開封大學閥門產業學院與橙色云互聯網設計有限公司達成戰略合作。 以平臺賦能行業&#xff0c;讓閥門教育“有的放矢” 會議與會者包括&#xff1a; 開封大學副校長 李治 中國國際科技促進會標準化工作委員…

element-ui日期時間選擇器禁止輸入日期

需求解釋&#xff1a;時間日期選擇器&#xff0c;下方日期有禁止選擇范圍&#xff0c;所以上面的日期輸入框要求禁止輸入&#xff0c;但時間輸入框可以輸入&#xff0c;也就是下圖效果&#xff0c;其中日歷中的禁止選擇可以通過【picker-options】這個屬性實現&#xff0c;此屬…

計算機網絡:深入分析三層交換機硬件轉發表生成過程

三層交換機的MAC地址轉發表生成過程結合了二層交換和三層路由的特性,具體可分為以下步驟: 一、二層MAC地址表學習(基礎轉發層) 初始狀態 交換機啟動時,MAC地址表為空,處于學習階段。 數據幀接收與源MAC學習 當主機A發送數據幀到主機B時,交換機會檢查數據幀的源MAC地址。…

【開源解析】基于Python的智能文件備份工具開發實戰:從定時備份到托盤監控

&#x1f4c1;【開源解析】基于Python的智能文件備份工具開發實戰&#xff1a;從定時備份到托盤監控 &#x1f308; 個人主頁&#xff1a;創客白澤 - CSDN博客 &#x1f525; 系列專欄&#xff1a;&#x1f40d;《Python開源項目實戰》 &#x1f4a1; 熱愛不止于代碼&#xff0…