auto_trade_sys/docs/common/单账号内存评估与Redis减压.md
薇薇安 13a0e7d580 delete: 移除过时的文档与代码文件
删除了多个不再使用的文档和代码文件,包括交易更新推送、条件订单推送、REST API 文档、WebSocket API 文档及相关的策略分析文档。这些文件的移除有助于清理代码库,确保项目的整洁性与可维护性。
2026-02-20 17:49:00 +08:00

36 lines
2.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 单账号交易服务内存评估与 Redis 减压
## 1. 单账号合理内存区间
| 组成部分 | 预估范围 | 说明 |
|----------|----------|------|
| Python 解释器 + asyncio | 5080 MB | 进程基础 |
| aiohttp + WebSocket 连接 x4 | 2050 MB | UserData / K线 / Ticker24h / BookTicker |
| Redis 客户端连接与缓冲 | 515 MB | 远端 Valkey |
| 各模块小缓存(有上限) | 520 MB | 价格、symbol_info、持仓等已限制条数 |
| 策略/扫描/持仓状态 | 1030 MB | active_positions、top_symbols 等 |
| 分配器碎片、未归还 OS | 50150 MB | Python 常见 |
| **合计(合理区间)** | **250400 MB** | 单账号、设计正常时 |
结论:单账号**约 250400 MB** 属正常;**500 MB 偏上**但尚可接受;若持续升到 700 MB+ 则偏异常。
你当前「多了约 500 MB」无服务约 720 MB开服务约 1223 MB → 交易进程约 **500 MB**,处于偏上、可接受范围。目标是通过 Redis 把压力放到远端,把进程压到 **300 MB 左右** 并稳定。
## 2. 当前仍占进程内存的来源
- **Ticker24h / BookTicker**refresh 循环每 2 秒从 Redis 拉全量(最多 500 条)回进程,进程内常驻一份完整拷贝(约 200+ 条 × 若干 KB是主要可优化点。
- **K 线**Leader 已只写 Redis进程内仅少量元数据和待写队列占比已较小。
- **持仓/余额**:有 Redis 时只写 Redis进程内几乎不保留。
- **价格 / symbol_info**:有 Redis 时仅降级写,条数有上限,占比小。
因此,**把 Ticker24h/BookTicker 改为“只从 Redis 按需读、进程内不再保留全量回填”**,是当前最有效的 Redis 减压手段。
## 3. 已实现Ticker24h/BookTicker 完全用 Redis进程内不保留全量
- **写**Leader 不变WS 收到后只写 Redis并写入 `market:ticker_24h:updated_at` / `market:book_ticker:updated_at`(时间戳,供 refresh 判断是否新鲜)。
- **读**
- **Ticker24h**`get_tickers_24h_from_redis(redis_cache)`,由 market_scanner 在 `is_ticker_24h_cache_fresh()` 为 True 时 `await` 调用,数据全部来自 Redis。
- **BookTicker**`get_book_ticker_from_redis(redis_cache, symbol)`,由 position_manager、binance_client 在有 redis_cache 时 `await` 调用。
- **refresh 循环**:只从 Redis 读取 `updated_at` 并写回 `_ticker_24h_updated_at` / `_book_ticker_updated_at`**不再**拉全量数据,进程内 `_ticker_24h_cache` / `_book_ticker_cache` 在有 Redis 时保持为空。
- **进程内**:不再保留 200500 条 ticker/book_ticker单账号进程内存预计可再降约 50150MB稳定在约 **300400MB**,压力由远端 Redis 承担。