面试实践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.mzph.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…