消息队列服务ONS产生10个G的僵死日志文件,版本是1.7.0.final

节前公司上线新版APP的时候,发现某些用户调用接口老是报错,一些用户却正常。 排除代码的问题后,目光转向了环境,使用的机器是阿里云的服务器,df-h的时候发现了第一个磁盘被占满,一通操作发现了很诡异的事情: ONS的日志明明是64M的大小,但是却能产生10个G的僵死文件,RT: 1.png 希望大手子能帮忙解答下疑问,每次重启后就能释放磁盘占用,但是没几天又会这样。

展开
收起
游客urfd563j75ltu 2020-10-09 13:39:54 789 分享 版权
阿里云 AI 助理回答

遇到您描述的这种问题,通常可能是由于日志滚动策略未正确配置或者日志切割出现问题导致的。ONS(阿里云消息服务)在使用过程中,如果日志没有被定期清理或滚动,可能会产生大量旧日志文件占用磁盘空间,尤其是当存在僵死文件(如未被正常删除的日志备份文件)时,情况会更加严重。

以下是一些建议来解决和预防此类问题:

  1. 检查日志配置:首先确认您的应用日志配置是否设置了合理的日志滚动策略。例如,在Java应用中,如果您使用Logback或Log4j作为日志框架,需要确保配置文件中有正确的日志滚动策略(如按时间、大小滚动),并设置合理的保留周期和最大文件数量。

  2. 日志自动清理:在阿里云ECS服务器上,可以利用Cron定时任务或者使用云监控与事件规则结合函数计算等服务实现自动化清理。例如,编写脚本定期删除过期的日志文件,并通过Cron定时执行。

  3. 优化ONS客户端配置:检查ONS客户端配置,看是否有针对日志记录的特定设置,比如日志级别、输出路径等,根据实际情况调整以减少不必要的日志输出。

  4. 使用云产品功能:如果条件允许,考虑使用阿里云的日志服务SLS来收集和管理应用日志。SLS提供了自动化的日志存储、查询、分析以及生命周期管理功能,可以有效避免日志文件直接占用ECS磁盘空间的问题。

  5. 监控磁盘使用情况:利用阿里云ECS的监控服务,设置磁盘使用率的报警规则,一旦磁盘空间接近阈值,及时收到通知进行处理。

  6. 排查程序异常:虽然您提到已经排除了代码问题,但建议再次检查是否有潜在的内存泄漏或资源未释放的情况,这些也可能间接导致日志处理异常。

  7. 重启服务前清理:在每次计划重启服务之前,手动或通过脚本清理一次日志文件,确保重启后能从一个干净的状态开始。

通过上述措施,您可以有效地管理和控制日志文件的大小,避免因日志问题导致的磁盘空间不足。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答

涵盖 RocketMQ、Kafka、RabbitMQ、MQTT、轻量消息队列(原MNS) 的消息队列产品体系,全系列产品 Serverless 化。RocketMQ 中文社区:https://rocketmq-learning.com/

还有其他疑问?
咨询AI助理