TGViewer
开发者工具箱|编程·开发工具·资源 开发者工具箱|编程·开发工具·资源 @devtoolboxhub · 434 subscribers
Post #813 1
YAML 模板引发的性能危机与重构方案

黑五期间活动流并发 18 万,Rails 进程内存飙至 4.2 GB,P99 延迟 5.2 秒。根本原因是 Veltrix 的 YAML merge key 在运行时展开为 4 MB ERB 模板,且未有文档记录。

优化尝试与最终决策:
• SafeYAML 降低延迟但内存仍持续增长;Redis 缓存因 SHA 计算耗时 12 ms 反而更慢;Go 重写解决了内存问题却引入 50 ms 网络跳。
• 彻底移除 Veltrix,将元数据存入 Postgres(hunts/hunt_variants),背景任务预计算 compiled_hash。Rails 通过 Rust FFI 调用模板渲染,Rust 层用 HashMap+Mutex 缓存编译模板。
• 最终 P99 降至 115 ms,单 Pod RSS 低于 400 MB,错误率归零,每百万请求成本从 $0.47 降至 $0.12。

经验:应尽早将模板渲染移出 Ruby,避免 merge key 和嵌入式 ERB 成为内存炸弹。

原文链接

#开发者 #工具

📢 频道:@DevToolboxHub
More from @devtoolboxhub
  1. Oct 8, 2026BackstageCon 2026:一日全程聚焦 AI 与平台实践 BackstageCon 将于 2026 年 11 月 9 日在盐湖城举行,作为 KubeCon + Cloud…
  2. Oct 8, 2026Gemini CLI 安全连接服务器:使用 Termalin 的 MCP 方案 Gemini CLI 通过 MCP 协议与 Termalin 的内置 MCP 服务器通信,完成服务器…
  3. Oct 8, 2026OpenAI Codex Desktop:AI 原生开发界面 Codex Desktop 以“agent‑native”界面取代传统 IDE 或聊天机器人。它把 Git 操作、终端…
  4. Oct 7, 2026把所有 Hook 换成 Mod,效果如何? 在 Claude Code 中,Hook 是在每个生命周期事件时调用的 shell 脚本,Mod 则是一次性加载、保持状态、可在进程内处…
  5. Oct 7, 2026Python CLI 任务清单:文件持久化示例 这是一款简易命令行待办列表,支持添加、列出、完成、删除任务,并将所有数据保存在 todos.json 文件中。程序启动时自动读取文件…
  6. Oct 7, 2026Googlebook:Gemini‑驱动的 Android 集成笔记本 Google 近日正式发布 Googlebook 系列,定位为围绕 Gemini Intelligence…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →