keep_alive
Ollama'da modelin bellekte kalma süresi
Ollama'nın, son istekten sonra modeli RAM/VRAM'de ne kadar süre yüklü tutacağını belirleyen ayar. Default 5 dakika; süre dolunca model boşaltılır ve sonraki istek soğuk başlar.
Bir modeli diskten okuyup RAM/VRAM'e yüklemek saniyeler sürer. Ollama bu yüzden modeli istekten sonra bir süre bellekte tutar; o süre boyunca gelen istekler anında yanıtlanır. Süre dolunca model boşaltılır ve bir sonraki istek yüklemeyi baştan bekler (cold start).
Ayar iki yerden yapılır:
- İstek başına:
/api/generateve/api/chatgövdesindekeep_alive. Bu değer sunucu ayarını ezer. - Sunucu geneli:
OLLAMA_KEEP_ALIVEortam değişkeni.
Kabul edilen değerler (Ekim 2026 itibarıyla, default 5m):
| Değer | Anlamı |
|---|---|
"10m", "24h" | Süre (Go duration formatı) |
3600 | Sayı = saniye |
-1 veya "-1m" | Negatif = süresiz yüklü kalır |
0 | Yanıttan hemen sonra boşalt |
Komut satırında ollama run model --keepalive 1h ile, anında
boşaltmak için ollama stop model ile yönetilir. Hangi modelin ne
zamana kadar yüklü kalacağını ollama ps çıktısındaki UNTIL
sütunu gösterir.
Restoranda ocağı açık tutmak. Sipariş gelmeye devam ediyorsa ocağı kapatıp her seferinde yeniden yakmak (cold start) zaman kaybı. Ama gece boyunca hiç müşteri gelmeyecekse açık ocak boşuna gaz yakar (bellek işgal eder). keep_alive "son siparişten sonra ocak kaç dakika açık kalsın" sorusunun cevabı.
Bir kod asistanı her 10-15 dakikada bir Ollama'ya istek atıyor. Default 5 dakika olduğu için model her seferinde boşalmış oluyor ve ilk yanıt, yükleme yüzünden belirgin şekilde gecikiyor.
Çözüm 1, sunucu geneli (macOS uygulaması):
``
launchctl setenv OLLAMA_KEEP_ALIVE "1h"
`
Ardından Ollama'yı yeniden başlat. Linux'ta systemd servisine
Environment="OLLAMA_KEEP_ALIVE=1h"` eklenir.
Çözüm 2, istek başına:
``
curl http://localhost:11434/api/generate -d '{
"model": "llama3.2",
"keep_alive": "1h",
"prompt": "Merhaba"
}'
``
Tersi: tek seferlik bir toplu işten sonra belleği hemen geri almak
istiyorsan "keep_alive": 0 gönder.
# Boş prompt = sadece yükle (preload). -1 = süresiz kal.
curl http://localhost:11434/api/generate -d '{"model": "llama3.2", "keep_alive": -1}'
# Ne yüklü, ne zamana kadar? (UNTIL sütunu)
ollama ps
# Belleği hemen geri al
ollama stop llama3.2
# ya da API ile:
curl http://localhost:11434/api/generate -d '{"model": "llama3.2", "keep_alive": 0}'# Tek seferlik (terminalden başlatılan sunucu)
OLLAMA_KEEP_ALIVE=30m ollama serve
# Ortam değişkeninde birimsiz sayı da olur: saniye olarak okunur
OLLAMA_KEEP_ALIVE=1800 ollama serve- Seyrek ama düzenli istekler (IDE asistanı, Slack botu) — süreyi uzat ki her istek soğuk başlamasın
-
Tek modeli sürekli kullanan sunucu —
-1ile kalıcı tut - Benchmark — ölçümden önce modeli preload et, yükleme süresi sonuçlara karışmasın
-
Toplu iş bitince —
0ile belleği hemen başka işe bırak
-
Bellek kıt ve birden fazla model dönüşümlü kullanılıyor —
-1diğer modellerin yerini tutar - Dizüstünde pil ve RAM önemliyse — default 5 dakika makul bir denge
-
llama.cpp sunucusu — keep_alive Ollama'ya özgü; llama.cpp'de karşılığı
--sleep-idle-seconds(default -1 = kapalı, model süreç açık kaldıkça yüklü)
API'deki değer env'i ezer
OLLAMA_KEEP_ALIVE=-1 ayarladın ama bir istemci her istekte keep_alive: "5m" gönderiyorsa model yine 5 dakika sonra boşalır. İstek başına değer her zaman kazanır; istemcinin ne gönderdiğine bak.
Birimsiz string
JSON'da "keep_alive": 300 (sayı) 300 saniye demektir; "keep_alive": "300" (birimsiz string) ise Go duration olarak ayrıştırılamaz ve hata verir. Ya sayı ya "300s" yaz.
Süresiz tutmak = belleği kilitlemek
Yeni bir model için yer yoksa Ollama istekleri kuyruğa alır ve boşta kalan modelleri boşaltarak yer açar. Aynı anda yüklü model sayısını OLLAMA_MAX_LOADED_MODELS sınırlar (default: GPU sayısı × 3, CPU'da 3). Büyük bir modeli -1 ile tutmak, diğer modellerin daha az belleğe sığmasına ya da CPU'ya kaymasına yol açabilir.