Vận hành Ollama trên server: systemd, log, benchmark

Chia sẻ bài viết

Mục lục
Vận hành Ollama trên server: systemd, log, benchmark

Trả lời nhanh: Bộ đồ nghề vận hành: cấu hình qua systemctl edit ollama (biến OLLAMA_HOST, KEEP_ALIVE, NUM_PARALLEL...), log đọc bằng journalctl -u ollama, đo tốc độ bằng ollama run ten-model --verbose nhìn dòng eval rate (tokens/giây), update bằng chạy lại script cài. Chuẩn tốc độ dùng được cho chat: từ ~10 tokens/giây trở lên.

Từ nghịch thử sang chạy thật là một cú chuyển nghề: Ollama giờ là dịch vụ có người dùng chờ ở đầu kia, cần khởi động cùng máy, có log để lần lỗi, có số đo để biết nhanh chậm, và có quy trình update không làm ai đứng hình. Bài chốt series này gom toàn bộ nghiệp vụ đó vào một trang, theo phong cách quen thuộc: lệnh dán được, số cụ thể.

Tóm tắt nhanh
  • Mọi cấu hình đi qua systemd override, đừng export biến tay rồi quên
  • --verbose in eval rate: con số tokens/giây định nghĩa trải nghiệm
  • OLLAMA_NUM_PARALLEL và MAX_LOADED_MODELS: hai van chỉnh cho server nhiều người dùng
  • Update Ollama = chạy lại script cài; model giữ nguyên, chỉ mất vài giây restart
  • Checklist sức khỏe 5 phút mỗi tuần: RAM, đĩa kho model, log lỗi, tốc độ chuẩn

Cấu hình chuẩn qua systemd

Gói cài Linux đã tạo dịch vụ ollama chạy cùng máy. Mọi tinh chỉnh nên nằm một chỗ:

sudo systemctl edit ollama
# [Service]
# Environment="OLLAMA_HOST=100.x.y.z:11434"   # nghe trong tailnet
# Environment="OLLAMA_KEEP_ALIVE=1h"          # model nam lai RAM 1 gio
# Environment="OLLAMA_NUM_PARALLEL=2"         # so yeu cau xu ly song song
# Environment="OLLAMA_MAX_LOADED_MODELS=2"    # so model dong thoi trong RAM
# Environment="OLLAMA_MODELS=/data/ollama"    # kho model sang o rieng (tuy chon)
sudo systemctl daemon-reload && sudo systemctl restart ollama
systemctl status ollama

Ưu điểm của đường systemd: sống qua reboot, ai vào máy cũng thấy cấu hình ở một chỗ, và systemd-analyze cat-config không bao giờ nói dối, khác hẳn biến môi trường export trong shell rồi thất truyền.

Đọc log khi có biến

journalctl -u ollama -e          # log moi nhat
journalctl -u ollama -f          # theo doi truc tiep
journalctl -u ollama --since "1 hour ago" | grep -i error

Các dòng đáng để mắt: loading model kèm thời gian, nạp lâu bất thường là chuyện ổ đĩa; out of memory/dịch vụ tự restart, model quá cỡ RAM, xem lại bài RAM; chuỗi yêu cầu lạ từ địa chỉ không quen, cổng đang hở, quay lại bài bảo mật ngay. Ghép Ollama vào bộ giám sát chung của VPS (Netdata/Uptime Kuma) bằng phép thử HTTP đơn giản lên /api/tags.

Benchmark tử tế: eval rate và cách đo đúng

ollama run qwen2.5:14b --verbose
# hoi mot cau dai ~200 chu, nhin khoi thong ke cuoi:
# prompt eval rate: toc do doc de bai (tokens/s)
# eval rate:        toc do sinh chu, CON SO QUAN TRONG NHAT

Cách đo cho ra số tin được: đo sau khi model đã nạp (lượt hai trở đi), cùng một câu hỏi khi so hai máy/hai model, chạy 3 lần lấy trung bình. Khung đọc số cho CPU thuần: ≥10 tokens/s, chat mượt; 5-10, dùng được, hợp tóm tắt/batch; <5, chỉ hợp việc chạy nền không ai ngồi chờ. Đừng quên đo thời gian nạp model (lượt gọi đầu sau restart), chỉ số phơi bày chất lượng ổ đĩa: NVMe vài giây, ổ thường cả phút.

Phục vụ nhiều người: hai van cần hiểu

OLLAMA_NUM_PARALLEL, số yêu cầu một model xử cùng lúc: tăng giúp nhiều người không phải xếp hàng, nhưng chia sẻ cùng một CPU nên mỗi người chậm đi; đội 3-5 người đặt 2-3 là điểm cân trên CPU. OLLAMA_MAX_LOADED_MODELS, số model đồng thời trong RAM: đặt 2 khi chạy cặp chat + embeddings (RAG); mỗi model cộng đủ RAM của nó vào tổng. Quá hai van này mà vẫn nghẽn giờ cao điểm thì đến ngưỡng nâng cấp thật: thêm RAM/nhân CPU, thêm máy thứ hai chia tải, hoặc GPU, đúng thứ tự đó về chi phí.

Update, dọn dẹp và checklist tuần

Update: chạy lại curl -fsSL https://ollama.com/install.sh | sh: thay binary, giữ model và cấu hình, gián đoạn vài giây; đọc changelog trước trên các bản đổi lớn. Dọn kho: ollama list lộ các model tải nghịch rồi quên, mỗi con 5-20GB, ollama rm con không dùng. Checklist 5 phút mỗi tuần: free -h (RAM còn thở?), df -h đường kho model (đĩa còn chỗ?), journalctl -u ollama --since "7 days ago" | grep -ci error (đếm lỗi tuần), một lượt --verbose đo eval rate so với số chuẩn của máy, tụt hẳn là điều tra sớm trước khi người dùng kêu.

Danh sách kiểm sức khỏe hằng tuần, năm phút

systemctl status ollama --no-pager | head -5      # dich vu con song
journalctl -u ollama --since "7 days ago" -p err --no-pager | tail -20   # loi trong tuan
ollama ps                                          # model dang nam trong RAM
free -h && df -h ~/.ollama                        # RAM va dung luong kho model
ollama run qwen2.5:7b --verbose "xin chao" 2>&1 | grep -E "eval rate|total duration"
Chỉ sốNgưỡng chấp nhậnNếu vượt thì làm gì
Tốc độ sinh chữtừ 10 chữ mỗi giây trở lên cho trò chuyệnChọn model nhỏ hơn, hoặc thêm card đồ họa
Dung lượng kho modeldưới 70% ổollama rm các model không dùng
Bộ nhớ còn trốngcòn ít nhất 2 GB sau khi nạp modelGiảm OLLAMA_MAX_LOADED_MODELS
Số lỗi trong nhật ký tuần0Đọc dòng lỗi đầu tiên, thường là hết bộ nhớ hoặc hết dung lượng
Thời gian phản hồi lượt đầudưới 3 giâyTăng OLLAMA_KEEP_ALIVE

Cập nhật an toàn, không làm ai đứng hình

# 1. Xem phien ban hien tai va ghi lai
ollama --version && ollama list > /root/model-truoc-update.txt

# 2. Cap nhat
curl -fsSL https://ollama.com/install.sh | sh

# 3. Kiem sau khi cap nhat
systemctl status ollama --no-pager | head -3
ollama list                       # model phai con nguyen
ollama run qwen2.5:7b "kiem tra" --verbose 2>&1 | tail -5

Model không bị xóa khi cập nhật vì chúng nằm trong thư mục dữ liệu riêng. Việc duy nhất gián đoạn là vài giây khởi động lại dịch vụ, nên chọn giờ vắng và báo trước nếu có người dùng.

Phục vụ nhiều người: hai van và cách chọn số

BiếnÝ nghĩaCách chọn
OLLAMA_NUM_PARALLELSố yêu cầu xử lý song song cho mỗi modelBắt đầu 2. Tăng lên 4 chỉ khi bộ nhớ còn dư nhiều
OLLAMA_MAX_LOADED_MODELSSố model giữ trong bộ nhớ cùng lúc1 nếu chỉ dùng một model. 2 khi có model nhúng riêng cho hỏi đáp tài liệu
OLLAMA_KEEP_ALIVEGiữ model trong bộ nhớ bao lâu sau lần gọi cuối30 phút cho máy dùng chung, giá trị âm một cho máy chuyên dụng
OLLAMA_MAX_QUEUESố yêu cầu chờ tối đaĐể mặc định, chỉ chỉnh khi có hàng đợi dài

Công thức ước lượng bộ nhớ: dung lượng model nhân với số model giữ trong bộ nhớ, cộng khoảng 1 tới 3 GB cho mỗi luồng song song tùy độ dài ngữ cảnh, cộng 2 GB cho hệ điều hành. Vượt bộ nhớ thật là máy tráo trang và tốc độ tụt hàng chục lần.

Giám sát tự động, ba dòng

# /etc/systemd/system/ollama-check.service (Type=oneshot)
# ExecStart=/bin/sh -c 'curl -sf http://127.0.0.1:11434/api/tags >/dev/null || (logger -t ollama-check "khong phan hoi, restart"; systemctl restart ollama)'
# kem timer chay moi 5 phut
journalctl -t ollama-check --since "30 days ago"   # xem da phai cuu bao nhieu lan

Phải cứu nhiều lần trong tuần là triệu chứng của nguyên nhân khác: hết bộ nhớ, hết dung lượng ổ, hoặc model quá lớn so với máy. Giám sát chỉ mua thời gian, không chữa bệnh.

Câu hỏi thường gặp

Ollama có cần restart định kỳ không?

Không theo lịch, dịch vụ chạy dài ổn định. Restart khi đổi cấu hình systemd, sau update, hoặc khi log báo bất thường. Cứ để systemd tự hồi sinh khi crash là đủ.

Nên tách kho model sang ổ/phân vùng riêng không?

Đáng làm trên server nghiêm túc: OLLAMA_MODELS trỏ sang phân vùng NVMe riêng giúp kho model trăm GB không bóp nghẹt phân vùng hệ thống, backup/di chuyển cũng gọn, copy nguyên thư mục là mang được sang máy mới.

Đo được lượng dùng của từng người/từng app không?

Ollama thuần không có tính năng đó, nó không có khái niệm tài khoản. Cần thống kê per-user thì đặt LiteLLM proxy đứng trước (phát API key từng người, đếm token) hoặc đo ở tầng app (n8n, Dify đều log được lượt gọi).

VPS đang chạy web, thêm Ollama vào chung có ổn không?

Ổn nếu RAM tính đủ cho cả hai và chấp nhận lúc AI suy nghĩ thì CPU bận. Cách chững chạc: đặt nice/cpu quota cho dịch vụ ollama qua systemd để web luôn được ưu tiên, hoặc tách hẳn AI sang VPS riêng khi cả hai đều có người dùng thật.

Hạ tầng VPS tại Việt Nam của TND
Cloud VPS linh hoạt và VPS NVMe xung cao, IP công cộng riêng, đặt tại Việt Nam
Số eval rate đẹp bắt đầu từ phần cứng đúng: VPS NVMe TND với Xeon xung cao kéo tokens/giây trên CPU, ổ Enterprise U.2 nạp model vài giây, RAM tới 24GB cho model 14-32B thường trực. Bàn giao 5 phút, đặt tại Việt Nam, dựng dịch vụ AI nội bộ ngay tuần này.
Dùng thử VPS NVMe, bàn giao trong 5 phútNhu cầu nhẹ hơn? Xem Cloud VPS

Bài viết liên quan