问题出现得很突然,日志倒是留得挺全。每次请求之间隔了五六分钟,第二次调用又要重新加载模型,日志显示 loading model,首字延迟从 0.8 秒涨到 12 秒。

刚开始盯着「客户端每次请求都新建会话,没有复用连接」,折腾了半个多小时,排掉了。

把日志和配置对完,能解释这个现象的基本就这几处。默认 keep_alive 只有五分钟,空闲后被卸载。还有一种是显存紧张时服务端会提前回收模型。

还有一种情况,用了无状态的 HTTP 调用,没有传 keep_alive 参数。

请求里显式指定保活时长

curl http://localhost:11434/api/generate -d '{"model":"qwen2.5:7b","prompt":"hi","keep_alive":"2h"}'

再往下把默认值写进服务端环境变量

$env:OLLAMA_KEEP_ALIVE='2h'; ollama serve

接着确认模型当前是否还在内存里

ollama ps

批量任务结束后主动卸载,避免长期占显存

ollama stop qwen2.5:7b

怎么算真的好了,看的是同一批现象。连续多次请求之间首字延迟稳定在 1 秒左右,ollama ps 里模型一直处于运行状态,不再反复出现 loading。

keep_alive 设成负数表示常驻,长期占着显存会影响其他模型加载,本地开发用完最好手动 stop 一次。报错文案容易误导,真正的原因往往在相邻那一层的日志里。

作者 9823189