图像与设计
Render 部署失败或服务崩溃时:用日志…
当 Render 部署失败、服务无法启动或崩溃、健康检查超时、生产报错、性能慢或数据库连接异常时,通过日志、指标和数据库查询定位并修复问题。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 59/100 ×0.15
适用场景
Render 部署失败或服务崩溃时:用日特定
解决思路
- 优先用 MCP 工具:运行 `list_services()` 测试可用性,获得结构化数据。
- 若 MCP 不可用,回退 CLI:运行 `render --version`。
- 配置认证:若安装 Render plugin(Cursor、Codex、Claude Code),完成 OAuth 提示;手动 MCP 客户端使用 Render API key;CLI 用 `render whoami -o json` 验证。
- 设置工作区:调用 `get_selected_workspace()` 或运行 `render workspace current -o json`。
- 若 `list_services()` 失败,设置 Render MCP server:插件场景完成 Render OAuth 后重新加载工具并重试 `list_services()`。
- 手动 MCP 设置:在 AI 工具的 MCP 配置中添加 Render MCP server,URL 为 `https://mcp.render.com/mcp`,Auth header 为 `Authorization: Bearer <YOUR_API_KEY>`,API key 从 `https://dashboard.render.com/u/*/settings#api-keys` 获取。
- 配置后重启工具,重试 `list_services()`;再用 `list_workspaces()` / `get_selected_workspace()` 设置工作区。
- 识别失败服务:调用 `list_services()`,查找 failed 状态服务;调用 `get_service(serviceId: "<id>")` 获取详情。若 MCP 未配置,询问是设置 MCP(优先)还是继续用 CLI。
- 获取构建/部署日志:调用 `list_logs(resource: ["<service-id>"], type: ["build"], limit: 200)`。
- 获取运行时错误日志:调用 `list_logs(resource: ["<service-id>"], level: ["error"], limit: 100)`。
- 搜索特定错误:调用 `list_logs(resource: ["<service-id>"], text: ["KeyError", "ECONNREFUSED"], limit: 50)`。
- 获取 HTTP 错误日志:调用 `list_logs(resource: ["<service-id>"], statusCode: ["500", "502", "503"], limit: 50)`。
- 分析错误模式:MISSING_ENV_VAR 匹配日志 `KeyError`、`not defined`,修复为添加到 render.yaml 或调用 `update_environment_variables`。
- 分析错误模式:PORT_BINDING 匹配 `EADDRINUSE`,修复为使用 `0.0.0.0:$PORT`。
- 分析错误模式:MISSING_DEPENDENCY 匹配 `Cannot find module`,修复为添加到 package.json/requirements.txt。
- 分析错误模式:DATABASE_CONNECTION 匹配 `ECONNREFUSED :5432`,修复为检查 DATABASE_URL、DB 状态。
- 分析错误模式:HEALTH_CHECK 匹配 `Health check timeout`,修复为添加 /health endpoint、检查 port binding。
- 分析错误模式:OUT_OF_MEMORY 匹配 `heap out of memory`、exit 137,修复为优化内存或升级 plan。
- 分析错误模式:BUILD_FAILURE 匹配 `Command failed`,修复为修正 build command 或依赖。
- 参阅完整错误目录:references/error-patterns.md。
- 若错误跨多次部署重复:从增量修复切换为更广泛扫描;扫描 codebase/config 中该错误类所有可能原因(相关 env vars、build config、依赖、类型错误),在下次重新部署前一起解决。
- 检查指标(崩溃、慢响应、资源问题):调用 `get_metrics(resourceId: "<service-id>", metricTypes: ["cpu_usage", "memory_usage", "memory_limit"])`。
- 检查 HTTP 延迟:调用 `get_metrics(resourceId: "<service-id>", metricTypes: ["http_latency"], httpLatencyQuantile: 0.95)`。
- 详细指标指南:references/metrics-debugging.md。
- 调试数据库问题:调用 `list_postgres_instances()` 检查数据库状态。
- 检查数据库连接:调用 `get_metrics(resourceId: "<postgres-id>", metricTypes: ["active_connections"])`。
- 直接查询 Postgres:调用 `query_render_postgres(postgresId: "<postgres-id>", sql: "SELECT state, count(*) FROM pg_stat_activity GROUP BY state")`。
- 详细数据库指南:references/database-debugging.md。
- 应用环境变量修复:调用 `update_environment_variables(serviceId: "<service-id>", envVars: [{"key": "MISSING_VAR", "value": "value"}])`。
- 应用代码修复:编辑源文件;commit 并 push;若启用 auto-deploy,部署会自动触发。
- 验证修复:调用 `list_deploys(serviceId: "<service-id>", limit: 1)` 检查部署状态。
- 验证修复:调用 `list_logs(resource: ["<service-id>"], level: ["error"], limit: 20)` 检查新错误。
- 验证修复:调用 `get_metrics(resourceId: "<service-id>", metricTypes: ["http_request_count"])` 检查指标。
- 快速工作流 Deploy failed:`list_deploys` → `list_logs(type: build)` → fix → redeploy。
- 快速工作流 App crashing:`list_logs(level: error)` → `get_metrics(memory)` → fix。
- 快速工作流 App slow:`get_metrics(http_latency)` → `get_metrics(cpu)` → `query_postgres`。
- 快速工作流 DB connection:`list_postgres` → `get_metrics(connections)` → `query_postgres`。
- 快速工作流 Post-deploy check:`list_deploys` → `list_logs(error)` → `get_metrics`。
- 详细工作流:references/quick-workflows.md。
- 快速参考 MCP Tools:服务发现 `list_services()`、`get_service(serviceId: "<id>")`、`list_postgres_instances()`;日志 `list_logs(resource: ["<id>"], level: ["error"], limit: 100)`、`list_logs(resource: ["<id>"], type: ["build"], limit: 200)`、`list_logs(resource: ["<id>"], text: ["search"], limit: 50)`;指标 `get_metrics(resourceId: "<id>", metricTypes: ["cpu_usage", "memory_usage"])`、`get_metrics(resourceId: "<id>", metricTypes: ["http_latency"], httpLatencyQuantile: 0.95)`;数据库 `query_render_postgres(postgresId: "<id>", sql: "SELECT ...")`;部署 `list_deploys(serviceId: "<id>", limit: 5)`;环境变量 `update_environment_variables(serviceId: "<id>", envVars: [{key, value}])`。
- CLI 回退命令:`render services -o json`。
- CLI 回退命令:`render logs -r <service-id> --level error -o json`。
- CLI 回退命令:`render logs -r <service-id> --tail -o text`。
- CLI 回退命令:`render deploys create <service-id> --wait`。
- 其他参考:references/log-analysis.md、references/troubleshooting.md。
- 相关技能:render-deploy 用于部署新应用到 Render;render-monitor 用于持续服务健康监控;render-mcp 用于 MCP server 设置和工具目录。
适用边界 · 注意事项
- 非 Render 平台部署失败或本地开发问题不适用。
- 没有 Render MCP server/CLI,且无法配置 OAuth/API key 时不适用;尤其指标和结构化数据库查询需要 MCP。
- 仅需部署新应用或持续监控时,应改用 render-deploy 或 render-monitor,而不是本调试流程。