故障排查
推荐顺序
text
1. 请求是否经过 Edge
2. 域名是否匹配
3. 规则是否命中
4. 缓存 key 是否一致
5. 响应是否可缓存
6. 缓存层级 / TTL
7. 源站与网络确认请求经过 Edge
bash
curl -skD - -o /dev/null https://cdn.example.com/看:
http
x-lagran-datapath: pingora
x-powered-by: lagran-edge没有这些头,检查 DNS / CNAME / NS / Caddy。
缓存不命中
检查:
x-cache、x-lagran-cache-sourcex-lagran-cache-reason- 响应
Cache-Control/Vary - 请求方法、Cookie、Authorization、Range
- Cache Key:query、
Accept-Language、Origin - 域名/规则是否忽略对应头
- 是否落到不同 Edge 节点
- TTL 是否过期
浏览器有 lang,预热没有
预热请求不带语言,key 本来就不带 |lang。给预热任务填写同样的:
text
Accept-Language: zh-CN,zh;q=0.9再观察。
规则忽略不生效
检查:
sql
SELECT
path_pattern,
priority,
match_content_type,
ignore_key_headers
FROM cache_rules
WHERE domain_id = (SELECT id FROM domains WHERE name='cdn.example.com');重点:
ignore_key_headers是否为origin=ignore,accept-language=ignore- 是否被更高优先级规则覆盖
match_content_type非空的规则不参与请求阶段 key- 域名是否启用了配置发布但未发布新版本
大文件缓存没有文件
检查:
ini
LARGE_CACHE_ENABLED=true
LARGE_CACHE_MIN_OBJECT_BYTES=8388608
LARGE_CACHE_MAX_OBJECT_BYTES=1073741824
RANGE_FILL_MAX_BYTES=33554432bash
find /var/lib/lagran/large-cache -name '*.meta.json' | head如果对象大于 MAX_CACHEABLE_BODY 且大缓存关闭,不会缓存。
CORS Vary 导致 Range 不缓存
响应:
http
vary: origin, access-control-request-method, access-control-request-headersGET/HEAD 会忽略 ACR*;Origin 仍按配置。若固定 ACAO,可按域名/规则忽略 Origin。
预热失败
text
warmed=0
callback timeout检查:
- Control → Edge
agent_url - 域名配置是否同步
- 源站是否 404 / 超时
- 大对象是否自动 Range
PREFETCH_TIMEOUT_SECS
边缘 Agent 401
AGENT_TOKEN不一致- 节点
auth_token覆盖 - 管理口是否被代理改写
- 系统时间
DNS
bash
dig @<dns-ip> -p 8053 cdn.example.com A +short如果返回 DNS 服务器 IP:
- CNAME 指错
- A 记录指错
- Zone 未委派
504
- 源站慢
ORIGIN_READ_TIMEOUT_MSORIGIN_STREAM_READ_TIMEOUT_MS- 大文件 Range
- Caddy / 网络
数据库 / 迁移
bash
journalctl -u lagran-control -n 100 --no-pager检查 DATABASE_URL、权限、迁移锁。
端口 / 防火墙
bash
ss -lntp | grep -E '8080|8081|8082|8053|443'