langfuse 2.50 用 docker compose 自托管,Web 能打开,SDK 上报 trace 时报 ClickHouse server is not reachable,clickhouse 容器状态是 running。
一开始怀疑是「密码与 .env 里的不一致」,查了一圈,方向不对。
排查方向其实有限,先把可能性排一排。容器之间用了 localhost,应该用服务名。也可能是ClickHouse 启动慢,健康检查过了端口还没就绪。
还有一种情况,宿主机内存不足,ClickHouse 被 OOM 杀掉后重启。
先看容器状态与最近日志
docker compose ps; docker compose logs clickhouse --tail 50
从 web 容器测端口连通
docker compose exec langfuse-web curl -s clickhouse:8123/ping
再往下核对连接串里的主机名
docker compose exec langfuse-web env | grep CLICKHOUSE
等前面都确认过,再重启后看队列表是否恢复
docker compose exec clickhouse clickhouse-client -q 'SELECT count(*) FROM traces'
中间停过一次,把已经改的东西回滚干净,再重新来一遍。
同样的操作我在测试机上先走了一遍,线上只做验证过的部分。
这台环境是别人交接的,不少默认值被动过,只能一项项核。
改完先别撤,确认这几项。上报接口返回 200,ClickHouse 里能查到刚写入的 trace 行,队列不再积压。
自托管最常见的问题是 compose 里把主机名写成 localhost,容器之间必须用服务名。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。
