-
Notifications
You must be signed in to change notification settings - Fork 0
[Priority: Low] [Bug/Ops] 上游 opencode temp .so 文件堆积与部署缓解跟踪 #355
Copy link
Copy link
Open
Labels
status:todoPlanned but not startedPlanned but not started
Description
现象描述
在长时间运行环境中,系统提示 /tmp 磁盘空间不足。经过审计发现,/tmp (通常为 tmpfs,大小为 16G) 被占用了 15GB+。
占用详情如下:
- 文件数量: 约 3,390 个。
- 单个文件: ~4.3MB。
- 命名模式:
/tmp/.*.so(例如.589fe...-00000000.so)。 - 文件性质: ELF 64-bit LSB shared object,带有调试信息。
根本原因诊断
- 会话配置过高:
opencode-a2a-serve的SessionManager默认设置了session_cache_maxsize=10000和session_cache_ttl_seconds=3600。 - 上游 LSP 行为:
opencode serve在处理这些会话的代码分析请求时,会启动pyright-langserver(Node.js)。Node.js 在加载特定原生扩展时会在/tmp创建随机命名的临时.so文件。 - 缓存堆积: 由于会话数量上限极高且存活时间长,且进程退出或会话切换时可能未触发物理文件的清理逻辑,导致了大量历史残留。
建议方案
为了防止 /tmp 空间再次耗尽,建议采取以下非激进措施:
- 优化配置:
- 调低
SESSION_CACHE_MAXSIZE(建议由 10,000 降至 500 - 1000)。 - 调低
SESSION_CACHE_TTL_SECONDS(建议由 3600 降至 600 - 1200)。
- 调低
- 清理策略:
- 在
opencode-a2a-serve的退出逻辑或定期心跳检查中,识别并清理过期的/tmp/.*.so文件。 - 或在
scripts/doctor.sh等健康检查脚本中加入清理逻辑。
- 在
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
status:todoPlanned but not startedPlanned but not started