¥
立即购买

技术排障指南生成

425 浏览
35 试用
10 购买
Nov 24, 2025更新

本提示词可根据具体问题描述生成专业、清晰的技术故障排除指南,包括可能原因分析、详细解决步骤及预防建议,帮助技术人员高效排查软件、硬件或系统故障,并建立标准化排障流程。

Windows 10(22H2)SupportApp 启动即退出(0xC0000005)排障指南

适用范围与背景

  • 设备/系统:Windows 10 22H2 x64,域加入,UAC 默认。
  • 应用:.NET Framework 4.8 WPF 客户端(C:\Program Files\SupportApp),调用内部 REST API;本地使用 SQLite 缓存与日志;依赖 VC++ 2015–2019 可再发行组件、WinHTTP、部分 COM 组件及自定义 DLL;重要注册表:HKLM\Software\Vendor\SupportApp 与 HKCU\Software\Vendor\SupportApp。
  • 安全环境:统一端点防护启用行为阻断与 ASR 规则,近期启用更严格应用控制策略;网络通过代理访问后端 API;用户为标准账号。
  • 现象:双击启动即退出,弹窗“应用程序无法正确启动(0xC0000005)”。事件日志记录 Application Error(ID 1000)与 .NET Runtime(ID 1026)。崩溃时间与策略下发时间接近,仅部分批次设备复现。

目标 为一线/二线技术人员提供标准化闭环排障流程,快速判定并修复:

  • 运行库损坏/缺失
  • 权限或写入路径问题
  • 防病毒/ASR/应用控制拦截
  • 第三方/自定义 DLL 冲突

使用工具(建议统一版本)

  • 事件查看器(Event Viewer)
  • Sysinternals:Process Monitor(ProcMon)、Sigcheck、ProcDump、ListDLLs(可选)
  • Windows 工具:SFC、DISM、PowerShell(Get-ProcessMitigation)、netsh
  • 依赖分析工具:Dependencies(替代旧版 Dependency Walker)
  • 调试/分析:Windows Error Reporting LocalDumps(收集转交三线)

安全提示

  • 如需变更安全策略、暂时关闭拦截,请在受控测试设备执行,并记录操作与恢复步骤。
  • 任何策略回退或例外添加需经安全团队审批。

一、快速确认(问题)

  1. 事件日志确认

    • 打开事件查看器 → Windows 日志 → 应用程序。
    • 筛选或定位崩溃时段的 Event ID 1000(Application Error)与 1026(.NET Runtime)。
    • 记录:
      • Faulting application name/path(SupportApp.exe)
      • Faulting module name/path(例如 KERNELBASE.dll、sqlite3.dll、某自定义插件 DLL)
      • Exception code:0xC0000005
      • 发生时间及用户 SID
    • 若故障模块指向某自定义/第三方 DLL,优先转入“第三方 DLL 冲突”诊断。
  2. 环境变化核对

    • 确认崩溃首次出现时间与安全策略/补丁下发时间是否一致或接近。
    • 记录设备所属策略组、策略编号、策略版本。

二、诊断分流(定位原因) 按以下顺序执行,便于快速判定类型与根因。

A. 检查安全控制拦截(AV/ASR/应用控制/受控文件夹)

  1. Microsoft Defender/端点防护日志

    • 事件查看器 → 应用程序和服务日志 → Microsoft → Windows → Windows Defender → Operational。
    • 在崩溃时段搜索包含下列关键词的事件(建议按进程名 SupportApp.exe 过滤):
      • Attack Surface Reduction(ASR)
      • Controlled folder access(受控文件夹访问)
      • Blocked、Prevented、Action blocked
    • 如存在拦截事件,记录规则名称/描述、触发路径、操作(阻止/审核)。
  2. 应用控制(WDAC/AppLocker/代码完整性)

    • AppLocker:事件查看器 → Microsoft → Windows → AppLocker → EXE and DLL(以及 MSI and Script)。
      • 查找 Deny/Blocked 的事件,确认是否对 SupportApp.exe 或其 DLL 进行阻止。
    • 代码完整性(WDAC):事件查看器 → Microsoft → Windows → CodeIntegrity → Operational。
      • 查找因策略拒绝加载的模块日志(包含 Policy、Code Integrity、Denied/Blocked 等字样)。
    • 若确认存在拦截或策略拒绝,转入“解决方案 C”。
  3. Exploit Protection(进程缓解策略)

    • PowerShell(管理员)运行:Get-ProcessMitigation -Name "C:\Program Files\SupportApp\SupportApp.exe"
    • 同时获取系统级:Get-ProcessMitigation -System
    • 关注是否启用了可能影响本应用的强制映像随机化(ForceRelocateImages)、控制流保护(CFG)、SEHOP、EAF 等高强度缓解策略。
    • 如该进程存在覆盖性策略且与崩溃时间一致,转入“解决方案 C”。

B. 权限与写入路径检查

  1. 程序目录权限

    • icacls "C:\Program Files\SupportApp" 查看 ACL。标准用户通常仅有读取与执行权限,不应发生写入。
    • 检查应用是否尝试写入程序目录(日志、SQLite、配置等),使用 ProcMon 捕获(见“证据采集”)。
    • 若存在 ACCESS DENIED 对 Program Files 下文件/目录,且随后引发 0xC0000005,转入“解决方案 B”。
  2. 用户数据写入位置

    • 检查应用配置/注册表(HKLM/HKCU)是否将缓存与日志路径指向 %ProgramFiles% 而非 %ProgramData% 或 %LocalAppData%。
    • 确认 HKCU\Software\Vendor\SupportApp 下键值可读写;如访问 HKLM 写入被拒绝,记录具体键值与错误。

C. 运行库与系统组件验证(.NET/VC++/系统文件)

  1. .NET Framework 4.8 健康性

    • 事件日志中若 .NET Runtime(ID 1026)报告非托管模块访问冲突或 AppDomain 初始化失败,继续检查。
    • 使用 Microsoft .NET Framework Repair Tool 进行修复(仅在受控设备测试)。
    • 验证注册表存在 4.x Full 子项且版本为 4.8 或更高;如缺损,安排修复。
  2. VC++ 2015–2019 可再发行组件

    • 确认同时安装 x64 与 x86 版本(部分插件或 COM 可能为 x86)。
    • 验证系统目录(C:\Windows\System32 与 C:\Windows\SysWOW64)中是否存在 vcruntime140.dll、vcruntime140_1.dll、msvcp140.dll 且版本一致。
    • 使用 Sigcheck 对上述 DLL 进行签名与版本检查,避免被应用目录中的同名 DLL 覆盖(见“第三方 DLL 冲突”)。
  3. 系统文件与映像健康

    • 以管理员运行:
      • sfc /scannow
      • DISM /Online /Cleanup-Image /RestoreHealth
    • 如检测并修复系统文件,复测启动。

D. 第三方/自定义 DLL 冲突与错误位数(x86/x64)

  1. DLL 掩盖与不兼容

    • 检查 C:\Program Files\SupportApp 及其子目录是否存在与系统运行库同名的 DLL(例如 msvcp140.dll、vcruntime140.dll、sqlite3.dll 等)。
    • 若存在,记录来源与版本;有可能发生“本地弱签名/过期版本覆盖系统库”导致访问冲突。
    • 使用 Dependencies 打开疑似 DLL,检查缺失依赖、错误导出、位数不匹配(x86 DLL 被 x64 进程加载会失败)等问题。
  2. 插件逐步隔离

    • 暂时将非必要插件/自定义 DLL 移出插件目录(或重命名 .dll.bak),逐一恢复以确定冲突模块。
    • 一次仅变更一个组件,启动复测,记录结果。

三、证据采集(用于验证与升级)

  • ProcMon 采集(建议 60–120 秒窗口)
    1. 启动 ProcMon → Filter:Process Name is SupportApp.exe → Include;Result 包含 ACCESS DENIED、NAME NOT FOUND、PATH NOT FOUND、FILE LOCKED WITH WRITERS。
    2. 清空捕获,点击开始后立即启动应用复现崩溃。
    3. 保存为 PML,并导出 CSV 供复盘。
  • LocalDumps(Windows Error Reporting)
    1. 注册表(管理员):HKLM\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\SupportApp.exe
      • DumpType DWORD=2(完全内存转储)
      • DumpFolder REG_EXPAND_SZ=%LOCALAPPDATA%\CrashDumps\SupportApp
      • DumpCount DWORD=5
    2. 复现后收集 dmp,打包上传。
  • 事件日志导出
    • Application、Windows Defender Operational、AppLocker、CodeIntegrity 日志(筛选崩溃时间 ±5 分钟)。
  • 依赖与签名
    • Sigcheck(管理员):sigcheck.exe -a -e -q -s "C:\Program Files\SupportApp"(输出版本、签名、时间戳)。
  • 代理与 WinHTTP
    • netsh winhttp show proxy(记录代理配置,供网络侧核对;一般不直接导致 0xC0000005,但用于完整性信息)。

四、解决方案与执行步骤(按诊断结果选择)

解决方案 A:安全控制拦截(ASR/应用控制/受控文件夹/Exploit Protection)

  1. ASR/Defender 拦截

    • 在终端安全平台/Defender 控制台查看对应设备与策略组,定位与 SupportApp 相关的阻止事件。
    • 临时缓解(测试设备):
      • 对 SupportApp.exe 添加 ASR 例外(按完整路径或签名发布者)。
      • 如受控文件夹访问阻止写入,添加允许的应用例外或调整写入路径到未受控位置(%ProgramData%、%LocalAppData%)。
    • 正式修复:
      • 与安全团队协作,在策略中为该应用发布者签名/哈希建立允许规则,或将相关规则设为审核模式(仅在必要时)。
    • 验证:重新启动应用,无阻止事件新增,事件日志无 1000/1026 相关崩溃。
  2. AppLocker/WDAC 拦截

    • 临时缓解(测试设备):在策略中添加 Publisher/Path/Hash 规则允许 SupportApp.exe 与其依赖 DLL。
    • 正式修复:更新应用控制策略,确保目录及签名证书信任链完整;避免使用过于宽泛的路径允许。
    • 验证:AppLocker/CodeIntegrity 日志不再出现 deny/block,应用正常启动。
  3. Exploit Protection 冲突

    • 针对 SupportApp.exe 添加程序级覆盖,暂时禁用可能导致崩溃的缓解(仅测试设备),例如强制映像随机化、CFG 等。
    • 在 GPO/安全平台中精细化配置,仅对该应用设定兼容的缓解集。
    • 验证:Get-ProcessMitigation -Name "…SupportApp.exe" 显示更新后的设置;应用稳定运行。

解决方案 B:权限与写入路径问题

  1. 确认写入位置
    • 将缓存/日志/SQLite 文件的路径配置为:
      • 用户范围:%LocalAppData%\Vendor\SupportApp 或 %AppData%\Vendor\SupportApp
      • 机器范围:%ProgramData%\Vendor\SupportApp
    • 避免写入 C:\Program Files\SupportApp。
  2. 预创建与权限
    • 创建上述目录,确保 Users 具备读取/写入权限:icacls "<路径>" /grant Users:(OI)(CI)(M)
  3. 复测启动并检查 ProcMon 是否仍有 ACCESS DENIED。
  4. 若注册表写入 HKLM 失败:
    • 将需要用户态写入的配置迁移至 HKCU\Software\Vendor\SupportApp。
  5. 验证:应用正常启动并写入用户目录,无权限错误日志。

解决方案 C:运行库/系统组件损坏或不一致

  1. 修复系统文件
    • sfc /scannow → 完成后重启。
    • DISM /Online /Cleanup-Image /RestoreHealth → 完成后重启。
  2. 重新安装 VC++ 运行库
    • 安装 VC++ 2015–2019 Redistributable(x64 与 x86),确保 vcruntime140、vcruntime140_1、msvcp140 版本一致。
  3. .NET Framework 修复
    • 运行 Microsoft .NET Framework 修复工具;确认 4.8 组件完整。
  4. 验证
    • Sigcheck 确认系统运行库为微软签名且版本一致。
    • 复测应用,无 1000/1026 再次出现。

解决方案 D:第三方/自定义 DLL 冲突与位数问题

  1. 消除本地库“遮盖”
    • 移除/重命名应用目录中与系统运行库重名的 DLL(如 msvcp140.dll、vcruntime140.dll)以避免加载本地旧版。
  2. 插件/自定义 DLL 逐一隔离
    • 通过重命名逐个禁用插件,复测定位导致崩溃的模块。
  3. 依赖检查
    • 使用 Dependencies 检查问题 DLL 的依赖是否缺失(例如需要 VC++ 子版本或特定 API 导出)。
    • 修复方式:替换为正确位数(x64)与签名版本,或更新该组件。
  4. 验证
    • 事件日志中的 Faulting module 不再指向该 DLL;应用稳定运行。

五、验证与回归测试

  • 启动验证:应用可正常启动至登录界面并加载插件,无退出或错误弹窗。
  • 日志验证:事件查看器在复测时段无新的 Application Error(ID 1000)或 .NET Runtime(ID 1026)崩溃条目。
  • 安全日志验证:Defender/AppLocker/CodeIntegrity 在复测期间无新的阻止条目与警告。
  • 功能验证:执行基本工单操作;检查本地日志与 SQLite 写入是否正常;网络代理可访问后端 API(netsh winhttp show proxy 仅确认设置,具体连通由应用日志侧核实)。

六、预防措施(策略与发布治理)

  • 变更前评估:安全策略与系统补丁采用分批灰度发布,在包含该应用的兼容性窗口完成验证。
  • 应用签名与清单:确保 SupportApp.exe 及所有插件 DLL 使用可靠发布者证书签名,避免未签名或过期证书引发应用控制拒绝。
  • 目录与写入规范:严格区分可执行目录(Program Files)与数据目录(ProgramData/LocalAppData);在安装脚本中预创建并设置权限。
  • 安全策略例外库:对可信业务应用建立明确的允许规则(签名优先),避免路径型宽松规则造成安全风险。
  • 启动自检:在应用启动阶段加入依赖检查与写入路径自检,将阻断原因记录到业务可见日志并优雅失败,避免直接崩溃。
  • 运维基线:建立设备侧健康检查脚本(检查 .NET、VC++、CodeIntegrity、Exploit Protection 配置),在策略升级前自动扫描。

七、升级路径(无法解决时) 请收集并附上以下材料,提交三线/研发与安全团队联合分析:

  • 事件日志导出(Application、Windows Defender Operational、AppLocker、CodeIntegrity),覆盖崩溃时段。
  • ProcMon 捕获(PML 与 CSV),过滤 SupportApp.exe,含启动至崩溃完整序列。
  • Dump 文件(LocalDumps 完整内存转储),标注设备信息、策略组编号与时间。
  • Sigcheck 输出(应用目录与关键 DLL),包含签名与版本。
  • Dependencies 报告(导致崩溃的 DLL)。
  • 设备当前安全策略清单(ASR/WDAC/AppLocker/Exploit Protection 的具体配置或截图)。
  • 已执行的修复步骤与结果矩阵(哪些设备有效/无效、时间与策略版本)。

附:执行优先级建议

  1. 先查安全拦截(Defender/AppLocker/CodeIntegrity/Exploit Protection),因与策略变更时间接近且影响范围为“部分批次设备”。
  2. 并行用 ProcMon 快速确认是否存在对 Program Files 的写入导致 ACCESS DENIED。
  3. 若拦截/权限均否定,再进入运行库与第三方 DLL 排查与隔离。

遵循以上流程可在一线快速分流,二线完成定位与修复,并形成可追溯的证据与升级材料,确保问题—诊断—解决—验证—预防—升级的闭环处理。

故障排除文档:Kubernetes 生产集群订单微服务 v2.3.1 出现 CrashLoopBackOff/OOMKilled/HTTP 500

一、问题

  • 现象
    • 订单微服务升级至 v2.3.1 后,Pod 频繁重启,状态 CrashLoopBackOff。
    • 高峰期 HTTP 500 间歇出现,延迟显著上升。
    • 监控显示 CPU 突增,伴随 OOMKilled 事件。
  • 环境与配置
    • Kubernetes v1.27(containerd),Ubuntu 22.04,3 节点工作池;Ingress NGINX;Calico;HPA 开启。
    • Pod 资源:requests 300m/256Mi,limits 1.5cpu/512Mi(曾提升至 768Mi 仍重启)。
    • 技术栈:Java 17 Spring Boot,G1 GC;Redis 6.2(缓存);PostgreSQL 13 主从;Kafka;镜像基于 Alpine。
    • 启用 liveness/readiness 探针与 OpenTelemetry 指标;配置通过环境变量注入。
  • 已尝试措施与线索
    • 回滚至 v2.3.0 可暂时缓解。
    • 提高内存 limits 至 768Mi 无法根治。
    • 关闭部分 JIT 优化无明显改善。
    • 清理 Redis 热键后短暂恢复。
    • 堆转储显示大量字典对象与热点键占用。
    • 延长探针初始延迟与超时后失败率下降但仍不稳定。
    • 调整连接池参数效果有限。

二、诊断 目标:与 SRE 与开发协作,判断是否为资源配置不足、热键导致缓存失衡、探针设置不当、JVM 参数问题或外部依赖异常。

A. 快速确认与数据采集

  1. Pod/容器状态
  • 查看事件与上一轮崩溃日志:
    • kubectl describe pod -n
    • kubectl logs -c -n --previous
  • 关注:
    • Last State/Reason 是否为 OOMKilled。
    • 探针失败次数、终止原因(Exit Code),重启次数增长速率。
  1. 资源使用
  • kubectl top pod -n ,关注 memory/CPU 峰值与 limits 接近度。
  • 指标:container_memory_working_set_bytes、container_cpu_usage_seconds_total。
  • 对比 GC/分配速率(若开启 GC 日志或 OTel/Java metrics)。
  1. 流量与错误
  • Ingress NGINX 日志/指标(4xx/5xx、upstream 状态、超时)。
  • 应用错误日志中 HTTP 500 的异常类型与堆栈。
  • p95/p99 延迟与 QPS 曲线,高峰期是否同时出现 CPU/OOM/探针失败。
  1. 版本变更对比
  • 比较 v2.3.0 与 v2.3.1 的变更(缓存键策略、序列化、日志级别、OTel/拦截器、线程/连接池、JVM 参数)。
  • 确认镜像基础层变化(Alpine 版本、glibc/musl 差异)及依赖库版本。

B. 资源配置不足(容器内存/CPU)定位

  • 现象指征:OOMKilled、RSS 接近 limits、GC 频繁且 CPU 高、CrashLoopBackOff 与 liveness/readiness 同时失败。
  • 步骤:
    1. 在容器内采样 RSS、堆与原生内存占用:
      • jcmd VM.flags
      • jcmd GC.heap_info
      • jcmd GC.class_histogram
      • 进程视角:cat /proc//status(VmRSS、Threads)
    2. 栈外内存核查:直接内存(Netty/ByteBuffer)、Metaspace、线程栈、代码缓存、JNI/native 分配。
      • 若使用 Netty/HTTP 客户端,查看 direct buffer 使用(应用指标或日志)。
    3. GC 行为:
      • 启用 GC 日志(-Xlog:gc*,safepoint:time,level,tags)观察 STW 停顿、晋升失败、混合回收频率。
    4. 数值评估:
      • 比较堆峰值 + 原生分配(估算)与容器 limits;若 headroom < 20%,高峰期易触发 OOMKill。

C. 热键与缓存失衡定位(Redis/应用内缓存)

  • 现象指征:清理 Redis 热键后短暂恢复;堆中大量字典对象;高峰期错误与延迟激增。
  • 步骤:
    1. Redis 端:
      • redis-cli INFO memory、INFO stats(keyspace_hits/misses、instantaneous_ops_per_sec、evicted_keys、latency)。
      • redis-cli SLOWLOG GET 128(是否存在单个大 value 或热点命令)。
      • redis-cli MEMORY STATS、对疑似大键执行 MEMORY USAGE
      • 采样 MONITOR(短时间)或在应用侧增加键访问计数,识别高频键。
    2. 应用侧:
      • 检查缓存策略(Spring Cache/Caffeine/自定义):是否无界、是否按键聚合大 Map/字典存入缓存、TTL 是否过长、压缩/序列化开销。
      • 分布式缓存击穿/热点保护(请求合并、单飞/去重、锁)是否缺失。
    3. 网络与分片:
      • Redis 实例是否单点;热点键集中于单分片;连接池饱和与排队。

D. 探针设置不当定位

  • 现象指征:探针失败与重启时间相关;延长初始延迟后失败率下降;高峰期更易失败。
  • 步骤:
    1. 对比 liveness/readiness 触发时段与 GC 暂停/CPU 峰值。
    2. 检查探针逻辑:
      • liveness 是否依赖外部服务(应仅检测进程健康)。
      • readiness 是否同时检查数据库/Redis/下游依赖,导致瞬时波动下反复不就绪。
    3. NGINX/Ingress 超时与后端返回 500/502/504 的对应关系。

E. JVM 参数问题定位

  • 现象指征:升级后 JVM 参数变更、OTel/日志级别升高带来分配增大;G1 回收频繁;直接内存未限流;线程数增加。
  • 步骤:
    1. 获取当前 JVM 内存相关参数:-Xms/-Xmx、-XX:MaxRAMPercentage、-XX:MaxDirectMemorySize、Metaspace 设置、代码缓存大小。
    2. 栈外内存来源梳理:Netty/HTTP 客户端、OTel 导出、压缩/序列化、unsafe/DirectByteBuffer。
    3. 线程/栈检查:应用线程数、线程栈大小(-Xss),线程泄漏或过量并发。

F. 外部依赖异常定位(PostgreSQL/Kafka/网络)

  • 步骤:
    1. PostgreSQL:pg_stat_activity、pg_stat_statements 检查慢查询、阻塞、重试风暴;连接池用量与超时。
    2. Kafka:消费者/生产者滞后、重试与批量大小;队列堆积导致应用内存上涨。
    3. 网络/Ingress:上游重试叠加;Nginx upstream 超时和重试策略是否导致流量放大。
    4. 校验错误码来源:HTTP 500 是否为应用内部异常(NullPointer/Timeout/CircuitBreakerOpen),与 OOM/探针失败的时间关联。

三、解决 根据诊断结果选择或组合执行以下方案。

A. 资源与 JVM 内存治理(优先消除 OOMKill)

  • 明确容器内存预算与堆、原生内存分配关系;在高峰期给足可预测的余量。
  • 建议:
    1. 显式设置堆与直接内存,避免不受控增长:
      • Xmx:不超过容器 limits 的 50–65%(例如 limits=512Mi 时,Xmx≈256–320Mi;limits=768Mi 时,Xmx≈384–480Mi),为 Metaspace、直接内存、线程栈、代码缓存预留空间。
      • -XX:MaxDirectMemorySize:为 Netty/HTTP I/O 设定上限(如 128–256Mi,按流量与负载评估)。
      • 保持 Xms < Xmx,避免启动时一次性占满。
    2. 启用并收集 GC 日志,验证回收与暂停:
      • JAVA_TOOL_OPTIONS: "-Xlog:gc*,safepoint:file=/var/log/app-gc.log:time,uptime,level,tags"
    3. 如堆占用长期维持高位且 GC 无法回收,结合堆 dump 分析对象保留路径,指向缓存与热点键问题。
    4. 如果观察到 CPU 因 GC 过高,评估短期提高 limits(如至 1Gi)以止血,再回到治理(不可长期依赖仅提限)。
  • HPA 调整:避免仅以 CPU 触发扩缩导致内存不足的Pod被放大流量。
    • 引入内存或自定义业务 QPS/延迟指标作为 HPA 信号;设置 stabilizationWindow 防抖。
    • 确保新副本就绪后再切流(readiness gate)。

B. 热键与缓存策略修正

  • Redis 层:
    1. 限制大 Key 或热点 Key:缩小 value、分片/拆键、压缩(如 Snappy/LZ4),设置合理 TTL。
    2. 增加热点保护:请求合并/单飞(single-flight)、本地锁/分布式锁,避免击穿导致风暴。
    3. 如为单实例,评估 Redis Cluster 或增加副本以分摊热点;必要时加入前置本地有界缓存。
  • 应用内缓存:
    1. 使用有界缓存(如 Caffeine)并设置最大条目数与最大权重(对象大小),禁用无界 Map 缓存。
    2. 避免将大型字典/聚合对象按单键整块缓存;改为细粒度缓存或分页缓存。
    3. 对热键增加短 TTL 与主动刷新(后台刷新)避免集中失效时的突发。
  • 监测:
    • 在应用侧增加键访问频次统计与体积监控,形成热键名单;对 Redis 使用 SLOWLOG、MEMORY USAGE 定期抽样。

C. 探针合理化

  • 原则:
    • liveness 只检测进程与基本运行状况,不依赖外部服务。
    • readiness 检测对外可服务能力,可包含对关键依赖的探测。
  • 建议配置(按启动时长与负载调整):
    • liveness:/actuator/health/liveness,initialDelaySeconds 60–90,periodSeconds 15,timeoutSeconds 2–3,failureThreshold 3。
    • readiness:/actuator/health/readiness,initialDelaySeconds 30–60,periodSeconds 10,timeoutSeconds 2–3,failureThreshold 3;对依赖检测设置更宽松超时与降级策略。
  • 防止探针“放大故障”:
    • 在高 GC/高负载时放宽超时或降低探测频率。
    • 确保 readiness 从不在短暂抖动中频繁切换(应用侧引入健康状态缓冲或半开状态)。

D. JVM 与运行时参数优化

  • 降低分配与原生内存压力:
    1. 控制线程数与栈:合理配置线程池,避免无界增长;如线程数多,适当减小 -Xss(结合调用深度评估)。
    2. 限制直接内存:-XX:MaxDirectMemorySize 明确上限;检查 Netty/HTTP 客户端的池化与缓冲策略。
    3. OpenTelemetry:降低采样率/批量队列、减少导出器缓冲,避免高峰时内存放大。
    4. 日志级别:避免在高峰期启用过细的 DEBUG/TRACE,减少对象创建与 I/O。
  • G1 调参(如确有暂停问题):
    • 可试 -XX:MaxGCPauseMillis=<目标>(如 200ms),并结合 GC 日志评估实际效果;避免过度依赖调参掩盖缓存问题。

E. 外部依赖稳定性

  • PostgreSQL:设置合理的连接池大小与超时;对慢查询优化索引;避免重试风暴(指数退避与上限)。
  • Kafka:控制批量、重试与缓冲大小;监控消费者滞后,避免应用端内存堆积。
  • Ingress/Nginx:确认 upstream 超时设置;避免过度重试导致请求放大。

四、验证

  • 指标与现象
    1. Pod 稳定:重启计数不再增长;无 OOMKilled 事件。
    2. 资源:container_memory_working_set_bytes 低于 limits 至少 20–30% 余量;CPU/GC 暂停降至可接受水平。
    3. 性能:p95/p99 延迟恢复;HTTP 500 比例下降至基线(或 ≤ 0.1% 按 SLO)。
    4. Redis:evicted_keys 接近 0;SLOWLOG 中无持续慢命令;instantaneous_ops_per_sec 与延迟平稳。
  • 检查点
    • GC 日志:无频繁晋升失败、无长时间 STW;堆占用有回落。
    • 探针:readiness/liveness 成功率稳定,未触发频繁切换。
    • Ingress 日志:无集中 502/504;与应用 500 不再相关联。
  • 回归测试
    • 在预生产/灰度环境进行高峰压测,覆盖热点请求路径与缓存命中场景;确保措施生效后再全量上线。

五、预防

  • 容量与内存预算
    • 为每个微服务建立容器内存预算模型:Xmx(50–65%)+ 直接内存 + Metaspace + 线程栈 + 代码缓存 + 安全余量。
    • 在 PR/发布流程中强制校验 JVM 参数与 Kubernetes 资源配额一致性。
  • 缓存治理
    • 统一热键监控与告警(应用侧统计 + Redis 指标);定期审计大 Key。
    • 所有本地缓存必须有界并设 TTL;禁止无界字典对象缓存。
    • 引入请求合并/热点保护中间件(如基于单飞策略)。
  • 探针与弹性
    • 标准化 liveness/readiness 规范与门槛;在负载测试中验证探针稳定性。
    • HPA 使用多指标(CPU+自定义业务指标/内存),设置稳定窗口,避免抖动。
  • 发布与可靠性
    • 灰度/金丝雀发布,流量分阶段放量;在 OTEL/日志级别变更时进行性能回归。
    • 建立内存泄漏与对象保留路径的定期检查(自动化 heap dump/分析于预生产)。

六、升级路径

  • T0(立即止血,SRE 主导)
    1. 临时提高 limits(如至 1Gi)并设置 Xmx 与 MaxDirectMemorySize 的明确上限,避免再次 OOMKill。
    2. 放宽探针超时与初始延迟;必要时仅保留 liveness,调整 readiness 减少流量抖动。
    3. 扩容副本或限流(Ingress/网关)以削峰填谷。
  • T1(当天内,SRE+开发)
    1. 启用并收集 GC 日志;获取堆 dump(在低风险时段);对热点对象与保留路径分析。
    2. 应用侧开关:降低 OTEL 采样与批量,回退新增的高开销日志级别。
    3. Redis 排查并处理热点键:降 TTL、拆键、降尺寸;必要时添加副本/分片。
  • T2(本周内,开发主导,SRE配合)
    1. 改造缓存策略(有界化、单飞、细粒度缓存、后台刷新)。
    2. 明确 JVM 内存参数基线策略,纳入配置管理(Xmx、MaxDirectMemorySize、线程池规模)。
    3. HPA 指标与探针标准模板落地,预生产压测验证。
  • 若依旧不稳定,升级至架构层面:
    • 评估 Redis Cluster / 本地多级缓存(边界与一致性策略)。
    • 对高频接口做隔离(独立副本/队列/读写分离)。
    • 与数据库/消息团队协作优化查询与消息堆积问题。

附:执行中的关键命令与数据点(参考)

  • kubectl describe pod / kubectl logs --previous / kubectl top pod
  • jcmd VM.flags / GC.heap_info / GC.class_histogram
  • Redis:INFO memory / INFO stats / SLOWLOG GET / MEMORY USAGE / MEMORY STATS
  • Postgres:pg_stat_activity / pg_stat_statements
  • Ingress:查看 upstream 日志与超时配置

说明

  • Java 17 默认具备容器感知,但堆与原生内存的总占用仍可能超过容器 limits,需显式控制 Xmx 与直接内存上限。
  • Redis 并无通用“热键”内置命令用于直接统计访问频次,建议通过应用侧统计或短期 MONITOR 采样结合 SLOWLOG、MEMORY USAGE 进行识别。
  • 探针设计需保证在短暂抖动与 GC 暂停期间不会误杀进程;liveness 不应依赖外部资源。

标题:APNs(Token 认证)迁移后 iOS 生产环境推送异常(BadDeviceToken / 410 Unregistered)故障排除指南

适用范围:

  • 客户端:iOS 16.7、iOS 17.1,Swift 5,UserNotifications、BackgroundTasks
  • 服务端:Node.js 18,APNs JWT Auth Key(Token-Based Authentication),HTTP/2 直连 api.push.apple.com
  • 错误码:BadDeviceToken、410 Unregistered
  • 推送负载:包含 mutable-content 与 content-available
  • 运行条件:部分设备处于公司 VPN 或低电量模式;用户近两周重装应用

目标:

  • 指导定位并解决生产环境中订单通知与静默推送不达的问题
  • 输出结构化、可直接发布的多语言排障内容(中文/English)
  • 覆盖证书/密钥、环境区分、设备令牌生命周期、权限与网络等关键因素

———————————————————— 一、问题概述(Problem)

  • 现象:
    • 迁移至基于 Token 的 APNs 后,生产环境的部分 iOS 设备收不到订单状态通知。
    • 服务端日志显示部分请求返回 BadDeviceToken;清理数据库失效令牌后仍有设备不接收。
    • 静默推送(content-available)用于后台同步不触发,用户重装应用后仍不稳定。
  • 已知条件:
    • 使用生产 APNs(api.push.apple.com),JWT Auth Key;Topic 与 bundle identifier 一致。
    • 沙箱环境推送成功,生产失败。
    • 部分设备处于公司 VPN 或低电量模式。
    • 客户端已调用 registerForRemoteNotifications 并上报新 token。

———————————————————— 二、诊断(Diagnosis) 请按从高概率到低概率的顺序执行,以尽快定位根因。

A. 环境与令牌(Environment & Device Token)

  1. 确认环境端点:

    • 生产环境必须连接 api.push.apple.com。
    • 沙箱环境必须连接 api.sandbox.push.apple.com。
    • 若向生产端点发送沙箱令牌,将返回 BadDeviceToken。 操作:
    • 在服务端日志中关联每次发送:endpoint、apns-topic、apns-push-type、token 来源(prod/sandbox/发行渠道)。
    • 校验生产队列中是否混入沙箱令牌或开发构建的令牌。
  2. 令牌来源与生命周期:

    • 设备令牌与应用、设备、环境强绑定;重装应用、恢复备份、设备 OS 升级或用户清除数据后,令牌可能变化。
    • 向旧令牌发送可能返回 410 Unregistered(APNs 表示该令牌对该 topic 不再有效),应立即删除。 操作:
    • 在客户端为每次应用冷启动与每次 didRegisterForRemoteNotifications 回调上报令牌,并携带“发行渠道”(App Store/TestFlight/Development,用于区分 prod/sandbox)。
    • 在服务端核查数据库:是否仍保留近两周内重装用户的旧令牌;核对 last_seen 时间戳与应用版本;确认清理策略在 410 后即时生效。
  3. 令牌编码与格式:

    • 客户端应以原始 Data 的 hex(不含空格和尖括号)上传,避免使用 description 导致格式错误。
    • 服务端存储的令牌字符串长度与字符集是否一致(64 字节 hex)。

B. APNs 请求头与负载(Headers & Payload) 4) apns-push-type 必须设置:

  • 用户可见通知:apns-push-type: alert(建议 apns-priority: 10)
  • 静默推送:apns-push-type: background(必须 apns-priority: 5;payload 含 {"content-available":1};不应包含 alert) 操作:
  • 抽样检查生产失败请求的 HTTP/2 头:apns-push-type、apns-priority、apns-topic、apns-expiration。
  • 如果 content-available 与 mutable-content 同时出现且无 alert,移除 mutable-content 并将 push-type 设为 background。
  1. apns-topic 与 bundle identifier:

    • apns-topic 必须与应用主 bundle identifier 完全一致(不使用扩展的 bundle id)。
    • 使用 JWT Auth Key 时还需确保 Team ID 与 keyId、bundleId 一致(否则会出现 InvalidProviderToken/BadTopic,但您当前报错是 BadDeviceToken/410)。 操作:
    • 确认所有生产请求均使用主应用的 bundle id 作为 apns-topic。
  2. 合并与过期:

    • 背景推送存在合并与速率限制;大量频繁 content-available 会被合并或丢弃。
    • apns-expiration=0 表示仅当设备在线时立即送达,否则过期;用于后台同步时可设置合理 TTL(例如 300–900 秒)。 操作:
    • 审查后台队列是否短时间内对同一设备发送多条静默推送;必要时使用 apns-collapse-id 合并。

C. 客户端权限与状态(Client Settings & State) 7) 权限与开关:

  • 用户可见通知需要用户授权;静默推送不需要授权,但需启用“后台 App 刷新”且应用未被用户强制退出。
  • 低电量模式会暂停后台刷新并显著降低静默推送唤醒概率。 操作(在设备上):
  • UNUserNotificationCenter.getNotificationSettings 校验授权状态(alert/badge/sound 是否允许)。
  • 设置→通用→后台 App 刷新:确认已开启;低电量模式关闭。
  • 提醒用户不要强制退出应用(上滑清除),否则静默推送无法唤醒。
  1. App 构建渠道:
    • App Store/TestFlight 令牌为生产;Xcode 开发/Ad Hoc 通常为沙箱。 操作:
    • 在客户端注册令牌时附加构建渠道标识(例如通过编译标志或使用收据类型判断 TestFlight vs App Store),用于服务端路由到对应端点。

D. 网络与公司 VPN(Network & VPN) 9) 设备到 APNs 的连通性:

  • 设备需要能与 APNs 建立出站连接:TCP 5223(首选)或 443(回退)到 Apple IP 段(17.0.0.0/8)。
  • 公司 VPN/防火墙若阻断或代理此流量,会导致推送延迟或丢失。 操作:
  • 与网络团队确认:设备侧允许直连 APNs(17.0.0.0/8,TCP 5223/443);不对该流量进行 MITM/代理。
  • 在受影响设备上切换到蜂窝网络或非公司 Wi‑Fi 测试是否恢复。

———————————————————— 三、解决措施(Resolution) 按以下步骤逐项落实:

  1. 强化令牌路由与清理
  • 在客户端上报令牌时携带字段:deviceId(匿名标识)、appVersion、buildChannel(appStore/testFlight/development)、environment(prod/sandbox 推断)。
  • 服务端持久化并以 environment+bundleId 路由到正确端点:
    • prod → api.push.apple.com
    • sandbox → api.sandbox.push.apple.com
  • 实施 410 Unregistered 的即时清理:收到 410 后立刻软删除令牌,并通知客户端重新上报。
  • 对近两周重装的用户:批量清理旧令牌,仅保留 last_seen 最新的令牌;对每个用户/设备仅保持一条有效令牌。
  1. 规范 APNs 请求头与负载
  • 用户可见通知:
    • apns-push-type: alert
    • apns-priority: 10
    • payload 包含 alert;若使用 Notification Service Extension 可保留 mutable-content: 1
  • 静默推送(后台同步):
    • apns-push-type: background
    • apns-priority: 5(必需)
    • payload 仅含 {"content-available":1} 与必要的业务数据;移除 alert 与 mutable-content
    • 合理设置 apns-expiration(例如 600 秒),防止设备离线期间过期
  • 确保 apns-topic 精确等于主应用 bundle identifier。
  1. 控制推送频率与合并
  • 针对同一设备短期内的多次静默推送,使用 apns-collapse-id 合并,降低被系统合并/丢弃的不可控性。
  • 将静默推送作为触发信号,与 BGAppRefreshTask/BGProcessingTask 配合;避免完全依赖高频静默推送完成大体量后台同步。
  1. 客户端稳健性改造
  • 在应用冷启动与前后台切换后调用 registerForRemoteNotifications;在 didRegisterForRemoteNotifications 中立即上报令牌。
  • 记录并上报 UNUserNotificationCenter 的权限快照,便于服务端分流(例如用户未授权仅发送静默推送)。
  • 为静默推送添加容错:若未触发,应用下次前台/后台刷新时补偿执行同步任务。
  • 加入可观测性日志(OSLog):didRegister 成功/失败、收到 remote notification(background)、BGTask 启动/完成。
  1. 网络与终端指导
  • 与公司网络部门确认防火墙策略:允许设备对 APNs 的出站连接(TCP 5223 优先,443 作为回退;目标 IP 段 17.0.0.0/8)。
  • 面向用户的支持文档:如使用公司 VPN,若收不到通知,可尝试关闭 VPN 或切换网络;关闭低电量模式以允许后台刷新。

———————————————————— 四、验证(Verification) 按以下用例验证修复效果:

  1. 令牌与环境验证
  • 在客户端重装后,观察服务端是否收到新令牌并标记为 prod(App Store/TestFlight)。
  • 使用该令牌向 api.push.apple.com 发送测试通知,响应应为 200(成功)。若返回 BadDeviceToken,核查令牌来源/环境标记。
  1. 静默推送验证
  • 构造仅含 {"content-available":1} 的负载:
    • Headers:apns-push-type: background、apns-priority: 5、apns-topic: <主 bundle id>
    • 设备不在低电量模式,后台 App 刷新开启,应用未被强制退出
  • 期望结果:application(_:didReceiveRemoteNotification:fetchCompletionHandler:) 或等效路径触发,并启动 BGTask 执行同步。
  • 观察客户端日志与服务端回执(HTTP 200)。若未触发,检查设备侧网络/VPN 与系统状态。
  1. 用户可见通知验证
  • 发送含 alert 的推送:
    • Headers:apns-push-type: alert、apns-priority: 10
    • payload 包含 alert 与(可选)mutable-content: 1
  • 期望:设备收到并显示通知;服务端返回 200。
  1. 错误回执验证
  • 人工向已卸载应用的旧令牌发送一条推送,确认收到 410 Unregistered;验证服务端自动清理逻辑是否生效(令牌被标记失效,后续不再发送)。

———————————————————— 五、预防(Prevention)

  • 令牌管理:
    • 令牌模型包含 deviceId、bundleId、environment(prod/sandbox)、buildChannel、appVersion、lastSeenAt。
    • 每次收到 410 立即清理;设置定期清理任务,删除 30 天未见的旧令牌。
  • 发送策略:
    • 必填 apns-push-type;背景推送固定优先级 5。
    • 合理设置 apns-expiration 与 apns-collapse-id,减轻合并与过期风险。
  • 可观测性:
    • 监控 APNs 响应分布(200/BadDeviceToken/Unregistered/…)、端点维度(prod/sandbox)、设备操作系统版本。
    • 建立告警:BadDeviceToken 或 410 突增时触发排查。
  • 客户端健壮性:
    • 每次启动/更新后强制重新上报令牌;在设置变更(权限、后台刷新)时上报状态。
    • 为静默推送建立前台补偿路径与 BGTask 回退。

———————————————————— 六、升级路径(Escalation) 若完成上述步骤后仍存在生产设备无法接收:

  • 收集材料:
    • 失败请求的完整 HTTP/2 头(apns-topic、apns-push-type、apns-priority、apns-id、apns-expiration、endpoint)
    • APNs 回执(含错误原因)、对应设备的构建渠道、令牌生成与上报时间、客户端日志(didRegister/背景接收)
    • 受影响设备的网络环境(VPN/防火墙策略、端口 5223/443 可用性)
  • 提交 Apple Developer Technical Support/TSI:
    • 描述问题、附加最小可复现样例(一个令牌在 sandbox 成功、prod 失败的对比)
    • 若涉及公司网络,附加防火墙例外策略说明与抓包/连通性测试结果

———————————————————— 附:关键事实与要求摘要

  • APNs 生产端点:api.push.apple.com;沙箱端点:api.sandbox.push.apple.com(HTTP/2,端口 443;可选 2197)。
  • 设备到 APNs 的连接需求:出站 TCP 5223(首选)或 443 到 Apple IP 段 17.0.0.0/8。
  • apns-push-type 必填(iOS 13+);alert 用于用户可见通知,background 用于静默推送。
  • background 推送必须 apns-priority: 5;payload 含 content-available: 1;不包含 alert。
  • 410 Unregistered 表示令牌对该 topic 不再有效(如应用卸载/令牌失效),应停止继续发送并清理。
  • BadDeviceToken 常见原因:环境端点与令牌不匹配(在 prod 端点使用 sandbox 令牌)、令牌过期/格式错误、bundleId 不匹配。

———————————————————— English version (for publication)

Title: Troubleshooting Guide — APNs (Token-Based) Migration: iOS Production Push Failures (BadDeviceToken / 410 Unregistered)

Scope:

  • Client: iOS 16.7/17.1, Swift 5, UserNotifications, BackgroundTasks
  • Server: Node.js 18, APNs JWT Auth Key (Token-Based), HTTP/2 to api.push.apple.com
  • Error codes: BadDeviceToken, 410 Unregistered
  • Payload: includes mutable-content and content-available
  • Conditions: some devices on corporate VPN or Low Power Mode; users reinstalled the app recently
  1. Problem
  • After migrating to token-based APNs, some iOS devices don’t receive order status notifications in production.
  • Server logs show BadDeviceToken on some requests; after cleaning invalid tokens, delivery remains unreliable on a subset of devices.
  • Silent pushes (content-available) for background sync do not fire; reinstall did not stabilize.
  1. Diagnosis A. Environment & Token
  • Verify endpoints: production → api.push.apple.com; sandbox → api.sandbox.push.apple.com. Sending a sandbox token to production returns BadDeviceToken.
  • Token lifecycle: tokens can change on reinstall/OS updates; sending to old tokens should return 410 Unregistered — remove immediately.
  • Token encoding: upload hex of the raw device token (no spaces/brackets); server-side strings should be consistent (64-byte hex).

B. Headers & Payload

  • apns-push-type is mandatory (iOS 13+):
    • alert for user-visible notifications (apns-priority: 10 recommended)
    • background for silent pushes (apns-priority: 5 required; payload includes {"content-available":1}; do not include alert)
  • apns-topic must match the main app bundle identifier exactly.
  • Control coalescing/expiration: set reasonable apns-expiration and use apns-collapse-id to avoid excessive silent push bursts.

C. Client Permissions & State

  • User-visible notifications require user authorization.
  • Silent pushes require Background App Refresh enabled and the app not force-quit; Low Power Mode reduces wake-up likelihood.
  • Record build channel (App Store/TestFlight/Development) at registration to route tokens to correct endpoints.

D. Network & VPN

  • Devices must reach APNs: outbound TCP 5223 (preferred) or 443 to Apple IP range 17.0.0.0/8.
  • Corporate VPN/firewalls must not block or proxy APNs traffic.
  1. Resolution
  • Strengthen token routing: store environment/buildChannel with tokens; route prod tokens to api.push.apple.com, sandbox tokens to api.sandbox.push.apple.com.
  • Immediate cleanup on 410 Unregistered; keep only the most recent token per device/user.
  • Normalize headers:
    • alert pushes: apns-push-type=alert, apns-priority=10
    • silent pushes: apns-push-type=background, apns-priority=5, payload only content-available
    • apns-topic equals the app’s bundle id
  • Rate control: collapse silent pushes per device; use BGTasks for actual work.
  • Client robustness: re-register and upload token on cold start; log notification settings; add compensating sync on next foreground if silent push didn’t fire.
  • Network guidance: ensure devices can reach APNs (5223/443 to 17.0.0.0/8); advise users to test on cellular or non-corporate Wi‑Fi.
  1. Verification
  • Token/env: after reinstall, confirm new token marked prod; sending to api.push.apple.com should return 200. BadDeviceToken indicates env mismatch or formatting issues.
  • Silent push: background push with headers (push-type=background, priority=5) should trigger background handler when not force-quit and Low Power Mode off.
  • Alert push: push-type=alert, priority=10 should display notification.
  • Error handling: sending to an old token should return 410; verify automatic cleanup.
  1. Prevention
  • Token model: deviceId, bundleId, environment, buildChannel, appVersion, lastSeenAt; periodic cleanup of stale tokens; immediate removal on 410.
  • Sending policy: always set apns-push-type; priority 5 for background; sensible expiration/collapse-id.
  • Observability: monitor APNs responses by endpoint and OS version; alert on spikes in BadDeviceToken/410.
  • Client hygiene: re-upload token at startup/update; report permission/background changes; provide fallback for silent push.
  1. Escalation
  • Collect: full HTTP/2 headers, APNs response bodies, device build channel, token timestamps, client logs, network/VPN details.
  • File an Apple DTS/TSI with a minimal repro (token succeeds on sandbox, fails on prod) and network evidence.

Key Facts

  • APNs endpoints: production api.push.apple.com; sandbox api.sandbox.push.apple.com (HTTP/2 over 443; 2197 optional).
  • Device connectivity: outbound TCP 5223 (preferred) or 443 to 17.0.0.0/8.
  • apns-push-type mandatory; background requires priority 5 and content-available.
  • 410 Unregistered → token invalid for topic; stop sending and delete.
  • BadDeviceToken → mismatched environment, invalid/old token, or formatting errors.

—— 发布建议:

  • 将本指南以中/英双语形式发布;在内部平台附加“运维清单”(端口/IP 开放项)与“客户端集成清单”(令牌上报字段、权限日志)。

示例详情

解决的问题

以一条可复用的高效提示词,让 AI 充当“技术写作专家”,为软件/硬件/SaaS/移动应用等场景快速生成可直接发布的故障排除指南。聚焦“问题-诊断-解决-验证-预防-升级路径”的闭环输出,统一文档口径与结构,支持多语言一键切换,帮助团队显著缩短响应与解决时间、提升自助解决率、降低支持成本,并将零散经验沉淀为标准化知识库。

适用用户

客服与技术支持经理

将高频报障快速转化为标准化排障文,沉淀知识库与常见问题指南。统一话术,缩短首响与解决时长,降低升级率。

SaaS产品经理与文档负责人

为新功能与版本发布补齐“故障排除”章节,确保用语统一、结构一致。提高自助解决率与试用体验,降低流失。

运维与现场工程团队

根据现场现象与历史记录,生成可操作的检查步骤与恢复流程。形成可追溯记录,减少误操作,缩短平均恢复时间。

特征总结

一键生成结构化故障排除指南,涵盖症状、原因、步骤、验证与预防
支持多语言输出,一次配置面向全球用户,多地区客服可同步维护,轻松扩展
自动提炼关键信息,输出可复用模板与检查清单,显著降低培训成本
基于问题描述智能补全上下文,避免遗漏前置条件、环境与限制等关键信息
输出清晰的操作步骤与决策分支,指导一线快速定位并准确复现问题
内置核对与验证环节,自动提示风险与注意事项,大幅减少发布错误
按角色和场景自动重写文案,对工程师、客服、终端用户分别友好,更易阅读
支持参数化调用,自定义问题与语言风格,保持品牌一致性,稳定持续输出
从日志、截图或简短描述快速成稿,减少反复沟通与专家依赖,显著节省时间成本

如何使用购买的提示词模板

1. 直接在外部 Chat 应用中使用

将模板生成的提示词复制粘贴到您常用的 Chat 应用(如 ChatGPT、Claude 等),即可直接对话使用,无需额外开发。适合个人快速体验和轻量使用场景。

2. 发布为 API 接口调用

把提示词模板转化为 API,您的程序可任意修改模板参数,通过接口直接调用,轻松实现自动化与批量处理。适合开发者集成与业务系统嵌入。

3. 在 MCP Client 中配置使用

在 MCP client 中配置对应的 server 地址,让您的 AI 应用自动调用提示词模板。适合高级用户和团队协作,让提示词在不同 AI 工具间无缝衔接。

AI 提示词价格
¥25.00元
先用后买,用好了再付款,超安全!

您购买后可以获得什么

获得完整提示词模板
- 共 278 tokens
- 6 个可调节参数
{ 问题现象描述 } { 设备/系统类型 } { 错误代码 } { 发生环境 } { 技术栈信息 } { 已尝试的解决措施 }
获得社区贡献内容的使用权
- 精选社区优质案例,助您快速上手提示词
使用提示词兑换券,低至 ¥ 9.9
了解兑换券 →
限时半价

不要错过!

半价获取高级提示词-优惠即将到期

17
:
23
小时
:
59
分钟
:
59