积分并发扣款竞态 Bug 复盘:从 Lost Update 到三重防护
前言
最近在我们的 AI 生成平台上遇到了一个 P0 级别的并发 Bug——用户同时发起多个生成任务时,积分扣款出现了竞态条件,导致积分被永久锁住。从发现到修复经历了两轮迭代(紧急修复 → 优化重构),本文完整记录这次复盘过程。
最近在我们的 AI 生成平台上遇到了一个 P0 级别的并发 Bug——用户同时发起多个生成任务时,积分扣款出现了竞态条件,导致积分被永久锁住。从发现到修复经历了两轮迭代(紧急修复 → 优化重构),本文完整记录这次复盘过程。
这篇教程是折腾 OpenClaw 一个多月、踩了无数坑之后总结出来的实战经验。不是翻译官方文档,是真金白银的 token 烧出来的。每一个配置、每一个 “推荐值” 都是反复试错后的结论。
如果曾经深入使用过ChatGPT或Claude,一定会注意他们的记忆功能:他们似乎记得你,能够在新的对话中回忆起你的偏好、背景信息,甚至几周前讨论过的话题细节。这种跨会话的记忆能力,远远超出了单次对话中的上下文窗口管理,背后是一套精心设计的长期记忆系统。
最新部署日期: 2026年3月3日
版本: Gateway v2026.3.2
状态: 生产就绪
┌─────────────────────────────────────────────────────────────┐
│ 外部访问层 │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Telegram │ │ Control UI │ │ SSH │ │
│ │ Bot API │ │ (HTTP) │ │ 管理 │ │
│ └──────┬───────┘ └──────┬───────┘ └──────┬───────┘ │
└─────────┼─────────────────┼─────────────────┼───────────────┘
│ │ │
▼ ▼ ▼
┌─────────────────────────────────────────────────────────────┐
│ AWS EC2 服务器 │
│ 实例ID: <your-ec2-instance-id> │
│ 公网IP: <your-ec2-ip> │
│ 类型: t3.small (2 vCPU, 2GB RAM) │
│ 系统: Amazon Linux 2023 │
│ │
│ ┌───────────────────────────────────────────────────────┐ │
│ │ OpenClaw Gateway v2026.3.2 │ │
│ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │
│ │ │ Telegram │ │ WebSocket │ │ HTTP API │ │ │
│ │ │ 通道 │ │ 服务器 │ │ 接口 │ │ │
│ │ │ │ │ (端口:18789)│ │ (端口:18789)│ │ │
│ │ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ │ │
│ │ │ │ │ │ │
│ │ └────────────────┴─────────────────┘ │ │
│ │ │ │ │
│ │ ┌───────────┴───────────┐ │ │
│ │ │ Agent 处理引擎 │ │ │
│ │ │ (AI 模型: GPT-OSS) │ │ │
│ │ └───────────┬───────────┘ │ │
│ │ │ │ │
│ │ ┌───────────┴───────────┐ │ │
│ │ │ 工具层 │ │ │
│ │ │ web_search, web_fetch, cron │ │
│ │ └───────────┴───────────┘ │ │
│ └───────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘| 组件 | 版本/配置 | 状态 |
|---|---|---|
| 实例类型 | t3.small | ✅ 运行中 |
| 操作系统 | Amazon Linux 2023 | ✅ 已配置 |
| Node.js | v22.22.0 | ✅ 已安装 |
| OpenClaw Gateway | v2026.3.2 | ✅ 运行中 |
| SSH 服务 | OpenSSH 9.x | ✅ 已加固 |
| Swap | 2GB | ✅ 已配置 |
| SSM Agent | v3.3.x | ✅ 已启用 |
| IAM Role | EC2-SSM-Role | ✅ 已挂载 |
| 服务 | 用途 | 状态 |
|---|---|---|
| agentify.top | AI 模型 API | ✅ 已配置 |
| Telegram Bot | 消息通道 | ✅ 运行中 |
| 端口 | 协议 | 服务 | 绑定地址 | 说明 |
|---|---|---|---|---|
| 22 | TCP | SSH | 0.0.0.0 | EC2 管理入口 |
| 80 | TCP | HTTP | 0.0.0.0 | 预留 (未使用) |
| 443 | TCP | HTTPS | 0.0.0.0 | 预留 (未使用) |
| 18789 | TCP | OpenClaw Gateway | 127.0.0.1 | WebSocket + HTTP API |
# 入站规则
TCP 22 0.0.0.0/0 # SSH 访问
TCP 80 0.0.0.0/0 # HTTP (预留)
TCP 443 0.0.0.0/0 # HTTPS (预留)注意: Gateway 绑定在 loopback (127.0.0.1:18789),不直接暴露公网。
在AI智能化服务平台中,我们开发了一个智能工具Agent平台,需要支持基于海量数据的语义搜索。传统的关键词搜索已经无法满足需求,我们需要的是理解用户意图的语义搜索。
今天把博客主域名从 walson.xyz 迁到了 walson.de5.net。
这次迁移的原因很现实:walson.xyz 快到期了,续费价格不划算(要几百块)。
对个人博客来说,我更希望的是“稳定、低成本、可长期维护”,所以我决定切到一个可长期使用的二级域名。