问题出现得很突然,日志倒是留得挺全。启动 ollama serve 时提示 listen tcp 127.0.0.1:11434: bind: Only one usage of each socket address,客户端连接也全部失败。

排查方向其实有限,先把可能性排一排。上一次的 ollama 进程没有退出,仍占着端口。另一种情况是桌面版和命令行版同时启动,抢同一个端口。

少数情况下是别的程序恰好占用了 11434,比如某些代理工具。

第一件事是查出占用该端口的进程

Get-NetTCPConnection -LocalPort 11434 | Select-Object OwningProcess

结束残留的 ollama 进程后重启服务

Get-Process ollama* | Stop-Process -Force

再往下改用其他端口并通过环境变量告知客户端

$env:OLLAMA_HOST='127.0.0.1:11435'; ollama serve

末了确认新端口监听成功

curl http://127.0.0.1:11435/api/tags

这次没动代码,只在配置和运行环境上找原因。

隔了一天再看,现象没变,说明不是偶发。

改完先别撤,确认这几项。curl 能拿到模型列表的 JSON,客户端不在日志里报连接被拒绝,ollama ps 也能正常返回结果。

补一句。改端口后客户端也要跟着改地址,只改服务端会出现能启动但调不通的情况,SDK 里通常要显式设置 base_url。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。

作者 9823189