Skip to content

[Priority: Low] [Bug/Ops] 上游 opencode temp .so 文件堆积与部署缓解跟踪 #355

@liujuanjuan1984

Description

@liujuanjuan1984

现象描述

在长时间运行环境中,系统提示 /tmp 磁盘空间不足。经过审计发现,/tmp (通常为 tmpfs,大小为 16G) 被占用了 15GB+

占用详情如下:

  • 文件数量: 约 3,390 个。
  • 单个文件: ~4.3MB。
  • 命名模式: /tmp/.*.so (例如 .589fe...-00000000.so)。
  • 文件性质: ELF 64-bit LSB shared object,带有调试信息。

根本原因诊断

  1. 会话配置过高: opencode-a2a-serveSessionManager 默认设置了 session_cache_maxsize=10000session_cache_ttl_seconds=3600
  2. 上游 LSP 行为: opencode serve 在处理这些会话的代码分析请求时,会启动 pyright-langserver (Node.js)。Node.js 在加载特定原生扩展时会在 /tmp 创建随机命名的临时 .so 文件。
  3. 缓存堆积: 由于会话数量上限极高且存活时间长,且进程退出或会话切换时可能未触发物理文件的清理逻辑,导致了大量历史残留。

建议方案

为了防止 /tmp 空间再次耗尽,建议采取以下非激进措施:

  1. 优化配置:
    • 调低 SESSION_CACHE_MAXSIZE (建议由 10,000 降至 500 - 1000)。
    • 调低 SESSION_CACHE_TTL_SECONDS (建议由 3600 降至 600 - 1200)。
  2. 清理策略:
    • opencode-a2a-serve 的退出逻辑或定期心跳检查中,识别并清理过期的 /tmp/.*.so 文件。
    • 或在 scripts/doctor.sh 等健康检查脚本中加入清理逻辑。

Metadata

Metadata

Assignees

No one assigned

    Labels

    status:todoPlanned but not started

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions