网站首页 > 博客文章 正文
背景
生产环境采用 RocketMQ 三主三从集群搭建,6 个实例部署在 3 台 Linux 服务器上(节省资源),每台服务器部署一主一从,生产上运行一段时间后,发现磁盘空间报警,发现df与du显示的空间不一致(相差几十G)。
问题原因
RocketMQ在同一台服务器上,启动一主一从 2 个实例,由于 2 个主从RocketMQ实例采用同样的 Logback 配置文件,写入的日志名称及滚动策略是一样的。
主从 2 个实例Logback在 Linux 下共享日志滚动时,会导致日志文件滚动后,但是其中一个 实例进程未释放日志文件的磁盘空间。
PS:我自己写了个Logback的 Demo,启动多个实例会重现该问题。
Logback源码分析见参考文章。
检查方法
# 查看 rocketmq 未释放文件
nbsp;lsof | grep rocketmq | grep deleted
# 查看 rocketmq 未释放文件的磁盘总大小,$7 是lsof 的 size 字段,单位 Byte
nbsp;lsof | grep rocketmq | grep deleted |awk 'BEGIN{sum=0}{sum+=$7}END{print sum/1024/1024 "MB"}'
解决方案
临时释放磁盘空间
# 主从同时停止写操作
# -v参数:4表示为只读,6为可读写,配置禁止写入数据操作时,主备节点都需要设置禁止写入数据的操作。
nbsp;sh /home/mq/rocketmq-all-4.6.0-bin-release/bin/mqadmin updateBrokerConfig -b mq1:10911 -k brokerPermission -v 4
nbsp;sh /home/mq/rocketmq-all-4.6.0-bin-release/bin/mqadmin updateBrokerConfig -b mq1:10912 -k brokerPermission -v 4
# rocketmq-console 上监控实例生产和消费情况,当消费变为0时,重启服务
# 启动成功后,恢复主从写操作
nbsp;sh /home/mq/rocketmq-all-4.6.0-bin-release/bin/mqadmin updateBrokerConfig -b mq1:10911 -k brokerPermission -v 6
nbsp;sh /home/mq/rocketmq-all-4.6.0-bin-release/bin/mqadmin updateBrokerConfig -b mq1:10912 -k brokerPermission -v 6
彻底解决
- 新增 3 台服务器,迁移RocketMQ的 3 个从节点到新服务器即可;
- 不增加服务器情况下,重新复制一份RocketMQ安装目录,修改 Logback 中的日志路径;
- 分析Logback源码,修改日志滚动实现,见参考文章。
参考文章
多项目写入同一Logback日志文件导致的滚动混乱问题(修改Logback源码):https://blog.csdn.net/Abysscarry/article/details/102847754
猜你喜欢
- 2024-11-18 快速使用docker方式部署安装RocketMQ
- 2024-11-18 介绍新版RocketMQ v4.9.3 下载、安装、配置的完成过程
- 2024-11-18 docker-4:mac使用docker部署开发用rocketmq
- 2024-11-18 扩展RocketMQ 使其支持任意时间精度的消息延迟
- 2024-11-18 RocketMQ如何突破内网限制,实现内外网互通
- 2024-11-18 SpringBoot3.0 + RocketMq 构建企业级数据中台完结
- 2024-11-18 centos7安装部署RocketMQ分布式集群
- 2024-11-18 「转」Spring Cloud异步场景分布式事务怎样做?试试RocketMQ
- 2024-11-18 RocketMQ集群搭建
- 2024-11-18 RocketMQ 的持久化配置
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)