zoukankan      html  css  js  c++  java
  • RocketMQ 部署不当导致磁盘空间不释放

    背景

    生产环境采用 RocketMQ 三主三从集群搭建,6 个实例部署在 3 台 Linux 服务器上(节省资源),每台服务器部署一主一从,生产上运行一段时间后,发现磁盘空间报警,发现dfdu显示的空间不一致(相差几十G)。

    问题原因

    RocketMQ在同一台服务器上,启动一主一从 2 个实例,由于 2 个主从RocketMQ实例采用同样的 Logback 配置文件,写入的日志名称及滚动策略是一样的。

    主从 2 个实例Logback在 Linux 下共享日志滚动时,会导致日志文件滚动后,但是其中一个 实例进程未释放日志文件的磁盘空间。

    PS:我自己写了个Logback的 Demo,启动多个实例会重现该问题。

    Logback源码分析见参考文章。

    检查方法

    # 查看 rocketmq 未释放文件
    $ lsof | grep rocketmq | grep deleted
    
    # 查看 rocketmq 未释放文件的磁盘总大小,$7 是lsof 的 size 字段,单位 Byte
    $ lsof | grep rocketmq | grep deleted |awk 'BEGIN{sum=0}{sum+=$7}END{print sum/1024/1024 "MB"}'
    

    解决方案

    临时释放磁盘空间

    # 主从同时停止写操作 
    # -v参数:4表示为只读,6为可读写,配置禁止写入数据操作时,主备节点都需要设置禁止写入数据的操作。
    $ sh /home/mq/rocketmq-all-4.6.0-bin-release/bin/mqadmin updateBrokerConfig -b mq1:10911 -k brokerPermission -v 4
    $ sh /home/mq/rocketmq-all-4.6.0-bin-release/bin/mqadmin updateBrokerConfig -b mq1:10912 -k brokerPermission -v 4
    
    # rocketmq-console 上监控实例生产和消费情况,当消费变为0时,重启服务
    
    # 启动成功后,恢复主从写操作
    $ sh /home/mq/rocketmq-all-4.6.0-bin-release/bin/mqadmin updateBrokerConfig -b mq1:10911 -k brokerPermission -v 6
    $ 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

    作者:蒋李恒
    出处:https://www.cnblogs.com/daodaotest/
    如果你想及时得到个人撰写文章的消息推送,可以扫描左边二维码(或者长按识别二维码)关注个人微信公众号。
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。
  • 相关阅读:
    excel导入phpmyadmin
    Python 教程资源
    SAE部署Python-让云端自动运行Python代码
    python socket 超时设置 errno10054
    使用python一步一步搭建微信公众平台(一)
    PHP读取MySQL数据
    php连接mysql并读取数据
    php分页例子实现读取mysql数据分页显示
    51Nod1305 Pairwise Sum and Divide
    SPOJ SUBXOR
  • 原文地址:https://www.cnblogs.com/daodaotest/p/14668291.html
Copyright © 2011-2022 走看看