You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Logstash生成大量jruby临时目录占满磁盘空间,求原因分析

问题原因及解决办法

核心原因:JRuby临时目录未自动清理

Logstash基于JRuby运行,默认会在/tmp下创建以jruby-为前缀的临时目录,用来存放JRuby的编译缓存、临时脚本或插件运行时的临时文件。出现大量残留的情况,通常有以下具体诱因:

  • 插件资源泄漏:你使用的OpenSearch输出插件(7.16.3版本)可能存在资源未正确释放的问题,导致JRuby无法触发临时目录的自动清理机制。尤其是插件频繁建立/断开连接、处理大量数据时,容易留下未回收的临时文件。
  • Logstash异常退出:如果Logstash不是正常停止(比如强制kill、崩溃),JRuby的清理钩子没机会执行,这些临时目录就会残留下来。
  • 系统tmp目录清理规则失效:Ubuntu 18.04默认的systemd-tmpfiles清理服务可能配置出问题,或者因故未正常运行,导致超过保留期限的临时文件没被删除。

快速解决&长期优化方案

  • 手动清理残留目录:先释放空间,执行命令:
    sudo rm -rf /tmp/jruby-*
    
  • 配置Logstash使用自定义临时目录:修改Logstash的jvm.options文件,添加JVM参数指定专属临时目录,避免和系统tmp混在一起,也方便单独管理:
    -Djava.io.tmpdir=/var/logstash/tmp
    
    记得创建这个目录并设置Logstash用户的读写权限:
    sudo mkdir -p /var/logstash/tmp
    sudo chown logstash:logstash /var/logstash/tmp
    
  • 检查插件更新:虽然系统包已更新,但OpenSearch插件可能有独立的bug修复版本,尝试升级到对应分支的最新兼容版本,解决资源泄漏问题。
  • 修复系统tmp清理机制:检查systemd-tmpfiles配置,确保/tmp目录的清理规则正常。查看/usr/lib/tmpfiles.d/tmp.conf,确认有类似如下配置:
    D /tmp 1777 root root 10d
    
    这个配置表示/tmp下超过10天的文件会被自动清理,若缺失或异常,修复后重启服务:
    sudo systemctl restart systemd-tmpfiles-clean.timer
    

内容的提问来源于stack exchange,提问作者MaGaroo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 17:30:00