区分症状
测量请求延迟、错误、CPU、内存、磁盘容量及数据库行为。区分列表慢、文件传输慢、提供方延迟和代理中断。在相同数据条件下比较,并记录准确构建。本指南不作笼统性能承诺或基准成绩声明。
控制请求规模
大列表使用分页,不要一次请求整个账号。避免无限并行上传附件或调用转写。临时数据库压力可能产生 unavailable 错误;安全读取可进行有界退避,非幂等写入应先检查状态再重试。除非有明确且经过审查的理由,否则保持限流开启。
流式传输与存储
HTTP/1.1 监听器使用 15 秒请求头读取超时,也包括空闲长连接;连接被关闭后客户端需要重新连接。普通请求体与流式响应不共用该请求头期限。代理的空闲及缓冲策略需要单独检查。本地与 S3 文件可流式传输,而数据库 BLOB 使用缓冲读取,规划内存时应考虑差异。
建立小型只读基线
变更前后对同一实例运行以下检查。健康检查延迟只是低成本请求的指标,不代表真实笔记查询性能;应另选一个固定只读列表请求,保持账号、筛选和页大小一致。记录时间及构建标识。容器内存或磁盘压力与延迟同时上升,只是调查线索,不能直接证明哪个子系统导致问题。
date -u
curl --silent --show-error --output /dev/null \
--write-out 'status=%{http_code} connect=%{time_connect}s total=%{time_total}s\n' http://127.0.0.1:5230/healthz
docker stats --no-stream memos
docker exec memos df -h /var/opt/memos
docker logs --since 10m --tail 100 memos