Ollama服务启动失败排查清单

这份 ollama 排查清单按官方文档梳理 systemd 服务状态、分平台日志路径和 GPU 识别失败的处理顺序。

完成这份 ollama 排查清单后,你能按运行形态区分“服务未启动”“服务已启动但没有发现 GPU”和“日志位置不对”,并找到下一步要查的服务状态或日志。开始前准备目标机器的终端、现有安装方式和相应管理权限;不要在命令或求助内容中写入密码或密钥,环境变量只在本机设置。

准备条件

先确认服务是由 systemd 托管、在终端手动运行、由桌面托盘应用启动,还是运行在 Docker 容器中。容器环境还要分清宿主机映射端口与容器内部监听地址。

本文采用的官方材料没有给出可核验的默认监听端口或 API endpoint,因此不填写猜测值。核对当前版本时,应在官方运行服务或网络配置章节查找实际监听地址、端口和 endpoint。

macOS 官方文档要求 macOS Sonoma(v14)或更新版本;Apple M 系列支持 CPU 和 GPU,x86 Mac 仅支持 CPU,日志目录为 ~/.ollama/logs(Ollama 的 macOS 文档)。

操作步骤:先定位 ollama 日志

按 Ollama 的故障排查文档,手动运行 ollama serve 时,日志位于当前终端;容器日志写入 stdout/stderr,可用 docker logs 查看,并通过 docker ps 找到容器名。Windows 最新服务日志位于 %LOCALAPPDATA%\Ollama\server.log,旧日志为 server-#.log,模型和配置位于 %HOMEPATH%\.ollama。

  1. 检查 Linux systemd 服务

如果使用 systemd 安装,Ollama 的 Linux 文档将 unit 文件定位为 /etc/systemd/system/ollama.service,以 ollama 用户和组执行 /usr/bin/ollama serve,并设置 Restart=always。

shell sudo systemctl status ollama

该命令用于检查 ollama systemd 服务的当前状态。

shell sudo systemctl start ollama

检查后仍未运行时,使用该命令启动服务。

shell journalctl -e -u ollama

该命令用于查看作为启动服务运行的 ollama 日志。

  1. 读取 macOS 服务日志

shell cat ~/.ollama/logs/server.log

该命令读取 server.log;macOS 图形应用的最近日志位于同一目录下的 app.log。

  1. 检查 Windows 日志与调试输出

shell explorer %LOCALAPPDATA%\Ollama

该命令打开日志目录,供你区分最新的 server.log 和旧的 server-#.log。

退出托盘应用后,再在 PowerShell 中运行:

powershell $env:OLLAMA_DEBUG="1" & "ollama app.exe"

该命令通过环境变量 OLLAMA_DEBUG=1 启动应用并启用调试日志。

  1. 确认容器名称

shell docker ps

该命令用于查找运行 Ollama 的容器名称,再结合前述文档中的 docker logs 定位 stdout/stderr 中的信息。

怎么确认成功

按照 Ollama 的 Linux 文档,在另一个终端运行以下命令:

ollama -v

能够返回版本信息,即完成该文档指定的服务运行验证;如果没有返回结果,应返回服务状态和日志步骤继续检查。

服务能够响应后,再用 Ollama 的常见问题文档提供的命令查看已加载模型:

ollama ps

输出中的 PROCESSOR 列可能显示 100% GPU、100% CPU 或 CPU/GPU 分配比例;模型默认在内存中保留五分钟,随后卸载,因此列表为空本身不能证明服务启动失败。

常见出错点

按 Ollama 的故障排查文档,如果 /tmp 挂载为 noexec,应把 OLLAMA_TMPDIR 指向运行用户可写的位置;如果 LLM library 自动选择异常,可以强制指定 library。容器中的 NVIDIA GPU 检查失败时,Ollama 也无法看到该 GPU;AMD 设备发现超时则可能与驱动过旧有关,并导致回退到 CPU。

文档给出的临时目录环境变量值示例为:

OLLAMA_TMPDIR=/usr/share/ollama/

目标目录必须允许运行 Ollama 的用户写入。

OLLAMA_LLM_LIBRARY="cpu_avx2" ollama serve

该命令强制使用 cpu_avx2 library;文档将这个示例标为 experimental。

docker run --gpus all ubuntu nvidia-smi

如果该检查失败,官方文档说明 Ollama 同样无法访问 NVIDIA GPU。

Linux suspend/resume 后可能出现找不到 NVIDIA GPU 并回退到 CPU 的情况,Ollama 的硬件支持文档给出的绕过方法是重新加载 NVIDIA UVM driver:

sudo rmmod nvidia_uvm && sudo modprobe nvidia_uvm

该命令卸载后重新加载 nvidia_uvm 驱动。

如果 SELinux 阻止容器使用 AMD GPU 设备,可运行:

sudo setsebool container_use_devices=1

该命令允许容器使用设备,仍需同时确认容器具有正确的设备组权限。

本文步骤按正文所链接的官方文档整理,未在本网站自有机器上运行;执行前请按当前版本再核对。

资料来源