问题出现得很突然,日志倒是留得挺全。启动 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。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。