知其然,知其所以然
常见报错实测 2026-11-03

Redis LOADING Redis is loading the dataset in memory:端口 0.02 秒就通、400 万 key 加载约 3 秒,PING 型健康检查会误杀,loading_eta_seconds 开头不准

实测 Redis LOADING Redis is loading the dataset in memory:400 万 key、141.8 MB 的 RDB 启动加载约 3 秒,端口 0.02 秒就通;加载期间 PING、GET、SET、DBSIZE、KEYS 被拒而 INFO、CONFIG GET、PUBLISH 可用;loading_eta_seconds 开头不准;从库全量同步同样 LOADING,swapdb 在本机没有观察到 async_loading。

Redis LOADING loading the dataset in memory RDB loading_eta_seconds 健康检查 repl-diskless-load swapdb 报错 真实验证 动画演示
常见报错实测 2026-11-03

Redis CROSSSLOT Keys in request don't hash to the same slot:同节点不同槽位也报,19 个多 key 命令全部受限,固定 hash tag 让 3000 个 key 全进一个节点

实测 Redis CROSSSLOT Keys in request don't hash to the same slot:同节点不同槽位也报;19 个多 key 命令全部 CROSSSLOT;hash tag 的规则(空花括号、多对花括号);MULTI/EXEC 到 EXEC 才报,Lua 偷用其它节点的 key 是另一种错误;固定 tag 让 3000 个 key 全进一个节点。

Redis CROSSSLOT Redis Cluster hash tag MGET MSET CLUSTER KEYSLOT Lua 报错 真实验证 动画演示
常见报错实测 2026-11-03

SQLite database is locked:读后写的延迟事务升级锁时 timeout=10 也 0.0 ms 立刻失败,WAL 模式 8 线程读后写失败 1372/1600、BEGIN IMMEDIATE 为 0

实测 SQLite database is locked:timeout 0、1、5 秒的等待行为;DELETE 与 WAL 下谁挡谁(WAL 解决不了写挡写);读锁升级写锁时 timeout 10 秒也 0.1 ms 立刻失败;Python 默认事务忘了 commit 会一直握着写锁;8 线程读后写 WAL + BEGIN 失败 1372/1600,BEGIN IMMEDIATE 为 0。

SQLite database is locked sqlite3 WAL BEGIN IMMEDIATE busy_timeout Python journal_mode 报错 真实验证 动画演示
常见报错实测 2026-11-03

Python RecursionError: maximum recursion depth exceeded:默认第 999 层失败,setrecursionlimit 设到一千万纯 Python 递归 500 万层照常跑(约 607 MiB),json/repr 的深递归仍报 Stack overflow (used 16352 kB)

实测 Python RecursionError: maximum recursion depth exceeded:默认上限 1000、第 999 层失败;经过 C 的 json/repr/比较改报 Stack overflow (used 16352 kB);setrecursionlimit 设 1000 万后纯 Python 递归 500 万层照常运行(约 607 MiB,没有段错误);线程栈大小无关;尾递归与 lru_cache 无效,迭代才是修法。

Python RecursionError maximum recursion depth exceeded sys.setrecursionlimit Stack overflow 递归 报错 真实验证 动画演示
常见报错实测 2026-11-03

RabbitMQ PRECONDITION_FAILED - inequivalent arg:整数 5000 和字符串 "5000" 报 received '5000' but current is '5000',只关闭 channel,改成 quorum 只能删除重建(5 条消息丢失)

实测 RabbitMQ PRECONDITION_FAILED - inequivalent arg:TTL、durable、x-queue-type、交换机 type 等改动的 406 原文;整数 5000 与字符串 "5000" 报 received '5000' but current is '5000';只关闭 channel、未 ack 的消息回队列;passive 声明不比较参数;policy 管参数可随时改;改队列类型只能删除重建(5 条消息丢失)。

RabbitMQ PRECONDITION_FAILED inequivalent arg 406 x-message-ttl x-queue-type policy channel 报错 真实验证 动画演示
常见报错实测 2026-11-03

MySQL ERROR 1213 Deadlock found when trying to get lock:反向更新 2 ms 检测并整个事务回滚,RR 下先 SELECT FOR UPDATE 再 INSERT 也死锁,统一加锁顺序让 1213 从 1034 次降到 0

实测 MySQL ERROR 1213 Deadlock found:反向更新两行 2 ms 检测、整个事务回滚;改得少的事务被选为牺牲品;RR 下先 SELECT FOR UPDATE 再 INSERT 的间隙锁死锁,RC 下变成 1062;INNODB STATUS 怎么读,innodb_print_all_deadlocks 需要 log_error_verbosity=3;随机顺序 1034 次 1213,升序为 0;关闭 innodb_deadlock_detect 后两边都等满 3 秒失败。

MySQL 1213 Deadlock found when trying to get lock InnoDB 间隙锁 innodb_print_all_deadlocks innodb_deadlock_detect 报错 真实验证 动画演示
常见报错实测 2026-11-03

curl 常见错误码 (6)(7)(28)(35)(52)(56)(60) 实测:404 不加 -f 退出码是 0,-k 只是跳过验证,--retry 默认不重试 52、56、7

实测 curl 常见错误码 6、7、28、1、3、18、22、23、35、47、52、56、60:每个用本机小服务复现原文;28 的三种说法;404 不加 -f 退出码是 0;-k 只是跳过验证;--retry 默认只重试超时与 HTTP 500/503,52、56、7 默认不重试,--retry-all-errors 才会。

curl curl 错误码 curl (6) curl (7) curl (28) curl (35) curl (52) curl (56) curl (60) --retry 报错 真实验证 动画演示
常见报错实测 2026-11-03

MongoDB Sort exceeded memory limit (code 292):9.0.4 默认落盘所以 130 MB 排序不再报,显式 allowDiskUse(false) 才报,$sort 与 $group 措辞不同,加 limit(10) 只要 0.09 s

实测 MongoDB Sort exceeded memory limit(code 292):9.0.4 上 allowDiskUseByDefault 默认为真,无索引排序 130 MB 默认成功(usedDisk=True);显式 allowDiskUse(false) 才报,$sort 与 $group 措辞不同;索引、limit、缩小投影、调大上限四种修法的耗时;关掉默认落盘后不写 allowDiskUse 也报。

MongoDB Sort exceeded memory limit QueryExceededMemoryLimitNoDiskUseAllowed allowDiskUse allowDiskUseByDefault $group 排序 报错 真实验证 动画演示
新版本特性实测 2026-10-30

Python 3.15 lazy import 实测:导入 15 个标准库模块,启动从 100.3 ms 降到 19.4 ms,出错要等到第一次使用才报

实测 Python 3.15 lazy import:3.14 报 SyntaxError,3.15 里导入推迟到第一次使用;模块不存在时到使用处才报 ImportError 链;try、函数、类里不能写;-X lazy_imports=all 在 3.14 上被静默忽略;导入 15 个标准库模块的启动时间 3.15 普通 import 100.3 ms、lazy import 19.4 ms。

Python Python 3.15 lazy import PEP 810 sys.set_lazy_imports_filter -X lazy_imports 启动时间 新特性 真实验证 动画演示
新版本特性实测 2026-10-30

SyntaxError: iterable unpacking cannot be used in comprehension:Python 3.15 里 [*a for a in xs] 合法了,和嵌套推导式、chain、extend 的速度实测

实测 Python 3.15 推导式里的 * 和 ** 解包:3.14 报 SyntaxError: iterable unpacking cannot be used in comprehension;3.15 里 [*a for a in xs] 等四种都能写;重复键后者覆盖;生成器表达式仍然惰性;各种写错的报错文本;字节码只有 LIST_EXTEND;拍平列表三种形状的速度对比。

Python Python 3.15 推导式 解包 PEP 798 iterable unpacking cannot be used in comprehension 列表拍平 新特性 真实验证 动画演示
新版本特性实测 2026-10-30

Python 3.15 内置 frozendict 实测:不是 dict 的子类,能当 lru_cache 的参数,哈希值会缓存,内存和 dict 几乎一样

实测 Python 3.15 内置 frozendict:3.14 里是 NameError;不是 dict 的子类但属于 Mapping;赋值删除是 TypeError、update/pop/clear 等方法不存在;可哈希、能传给 lru_cache、能当 dataclass 默认值;和 MappingProxyType 的区别;占内存、构造、读取、哈希的耗时对比。

Python Python 3.15 frozendict 不可变字典 可哈希 MappingProxyType lru_cache 新特性 真实验证 动画演示
新版本特性实测 2026-10-30

Python 3.15 profiling.sampling 在 macOS 上报 Permission Error 要 sudo:cProfile 搬进 profiling.tracing 后 main、label 等四个名字没了

实测 Python 3.15 的 profiling 包:cProfile 搬到 profiling.tracing,main/label/io/importlib 四个名字消失(cProfile.main() 是 AttributeError);新的采样分析器 python -m profiling.sampling 在 macOS 上 run/attach/dump 都报 Permission Error,需要 sudo;cProfile 输出在 3.14 与 3.15 上结构相同,.prof 文件能互读。

Python Python 3.15 profiling.sampling cProfile profiling.tracing Permission Error Tachyon pstats 新特性 真实验证 动画演示
京ICP备2026067502号-1京公网安备11010502063487号