Ollama 大模型服务故障排查:从连不上到跑不通的完整步骤
Ollama 装好后最常见的问题不是模型效果差,而是服务根本连不上、模型拉不下来或者 GPU 没被调用。
本文按故障现象分类,给出可执行的排查命令和修复步骤,适用于 Linux 服务器和本地开发机,前提是你已经完成 Ollama 安装并能通过终端操作。
先确认服务是否真的在运行
很多“连不上”的问题,第一步要排除 Ollama 后台服务没启动。
执行:
systemctl status ollama
如果状态显示 inactive 或 failed,先启动并设为开机自启:
sudo systemctl start ollama
sudo systemctl enable ollama
启动后再看端口监听情况:
ss -tlnp | grep 11434
预期能看到 LISTEN 状态和 ollama 进程。
如果端口没出现,直接看日志定位原因:
journalctl -u ollama -n 50 --no-pager
日志里常见的失败原因包括模型目录权限不足、端口被占用、配置文件写错。
根据报错关键词搜索比盲目重装更快。
远程访问不通时检查监听地址和防火墙
本机 curl http://127.0.0.1:11434 能通,但从其他机器访问失败,通常是监听地址限制在 127.0.0.1。
Ollama 默认只监听本地回环地址,需要修改服务配置。
编辑服务文件:
sudo systemctl edit ollama
在打开的编辑器中加入环境变量:
[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"
保存后重载并重启:
sudo systemctl daemon-reload
sudo systemctl restart ollama
接着检查防火墙是否放行 11434 端口。
以 firewalld 为例:
sudo firewall-cmd --add-port=11434/tcp --permanent
sudo firewall-cmd --reload
如果使用云服务器,还需要在安全组中放行对应端口。
验证方式是在另一台机器执行 curl http://服务器IP:11434,返回 Ollama is running 说明网络层已通。
注意:将 OLLAMA_HOST 设为 0.0.0.0 会让服务暴露在网络上,生产环境应配合防火墙白名单或反向代理鉴权,不要直接对公网开放。
模型拉取失败或卡住的排查顺序
执行 ollama pull 模型名 长时间无响应或报错,按以下顺序检查。
先确认网络能否访问模型仓库。
Ollama 默认从官方仓库拉取,国内网络环境可能不稳定。
可以先测试连通性:
curl -I https://registry.ollama.ai
如果超时,需要配置代理。
通过 systemd 环境变量设置:
sudo systemctl edit ollama
加入:
[Service]
Environment="HTTP_PROXY=http://代理地址:端口"
Environment="HTTPS_PROXY=http://代理地址:端口"
重载并重启服务后,再执行一次拉取,观察是否出现下载进度。
如果网络正常但仍失败,检查磁盘空间:
df -h
模型文件通常存放在 /usr/share/ollama/.ollama/models,空间不足会导致下载中断。
清理空间或通过 OLLAMA_MODELS 环境变量指定其他目录。
拉取完成后用 ollama list 确认模型出现在列表中,再用 ollama run 模型名 做一次简单对话验证。
GPU 没被调用时怎么确认和修复
模型能跑但速度很慢,多半是回退到了 CPU。
先看 Ollama 启动日志里是否有 GPU 识别信息:
journalctl -u ollama -n 100 --no-pager | grep -i gpu
NVIDIA 环境可以用 nvidia-smi 查看显卡状态和驱动是否正常。
如果驱动正常但 Ollama 没识别到 GPU,检查是否安装了对应容器运行时。
以 Docker 方式部署时,需要 nvidia-container-toolkit 并加 --gpus all 参数。
直接安装在宿主机上的情况,确认驱动版本与 Ollama 版本兼容。
日志中出现 no compatible GPUs found 一类提示时,优先升级显卡驱动,再重启 Ollama 服务。
验证是否真正用上 GPU,可以在运行模型时另开终端执行:
nvidia-smi
观察是否有 Ollama 相关进程占用显存。
没有占用说明仍在用 CPU,需要回到驱动和运行时检查。
常见疑问补充
修改配置后需要重启服务吗? 需要。
通过 systemctl edit 修改的环境变量不会自动生效,执行 daemon-reload 和 restart 后才生效。
日志里报端口被占用怎么办? 用 ss -tlnp | grep 11434 找到占用进程,停掉冲突服务,或者通过 OLLAMA_HOST 换一个端口。
模型拉取到一半失败,需要重新下载吗? 通常重新执行 ollama pull 会继续未完成的部分,不需要手动删除缓存。
故障排查的核心思路是先确认服务状态,再分层检查网络、存储和硬件加速。
每次修改配置后都用 curl 或 ollama run 做一次结果验证,避免多个问题叠在一起难以定位。