Để fix lỗi Out of Memory (OOM) khi chạy AI Agent trên VPS, bạn cần kiểm tra dung lượng RAM, xác định tiến trình tiêu thụ bộ nhớ và điều chỉnh tài nguyên phù hợp. Trong nhiều trường hợp, tạo thêm Swap hoặc giảm số tác vụ chạy đồng thời có thể giúp AI Agent hoạt động ổn định hơn mà chưa cần nâng cấp VPS. Bài viết dưới đây sẽ hướng dẫn cách tìm nguyên nhân và khắc phục lỗi bằng những thao tác Linux cơ bản, phù hợp ngay cả với người mới sử dụng VPS.
Lỗi Out of Memory (OOM) trên VPS là gì?
Out of Memory (OOM) là tình trạng hệ thống hoặc một ứng dụng không còn đủ bộ nhớ được phép sử dụng để tiếp tục hoạt động bình thường.
Trên VPS Linux, khi bộ nhớ cạn kiệt và hệ thống không thể thu hồi đủ tài nguyên, cơ chế OOM Killer có thể kết thúc một hoặc nhiều tiến trình nhằm giải phóng RAM, hạn chế ảnh hưởng đến toàn bộ máy chủ.
Lỗi OOM có thể xảy ra theo hai trường hợp:
- Hết bộ nhớ toàn hệ thống: VPS không còn đủ bộ nhớ khả dụng để đáp ứng nhu cầu của các tiến trình.
- Vượt giới hạn bộ nhớ của ứng dụng: AI Agent chạy trong Docker hoặc một nhóm tiến trình bị giới hạn RAM, dù VPS vẫn còn bộ nhớ trống.
Theo tài liệu Docker, container có thể gặp OOM khi chạm giới hạn bộ nhớ được cấu hình riêng, không nhất thiết phải đợi toàn bộ VPS hết RAM.

Dấu hiệu và nguyên nhân khiến AI Agent bị lỗi OOM
Dấu hiệu nhận biết lỗi OOM
Khi AI Agent gặp sự cố liên quan đến bộ nhớ, bạn có thể nhận thấy:
- AI Agent đang xử lý công việc thì ngừng phản hồi.
- Dashboard hoặc giao diện quản lý đột ngột mất kết nối.
- VPS phản hồi chậm, thao tác SSH bị gián đoạn.
- Container Docker tự dừng hoặc liên tục khởi động lại.
- Nhật ký hệ thống xuất hiện Out of memory, Killed process hoặc oom-kill.
- Tiến trình kết thúc với mã 137 hoặc hiển thị trạng thái OOMKilled.
Lưu ý: Exit Code 137 cho biết tiến trình bị kết thúc bằng tín hiệu SIGKILL. Đây là dấu hiệu cần kiểm tra, nhưng chưa đủ để khẳng định nguyên nhân chắc chắn là hết RAM.

Những nguyên nhân phổ biến
Một số nguyên nhân thường gặp khi vận hành AI Agent trên VPS bao gồm:
- RAM quá thấp: Tổng bộ nhớ không đáp ứng được nhu cầu của AI Agent và những dịch vụ chạy cùng máy chủ.
- Nhiều tác vụ chạy đồng thời: Các Agent, công việc tự động hoặc tiến trình xử lý nền cùng tiêu thụ RAM.
- Xử lý dữ liệu lớn: AI Agent cần đọc tài liệu dài, xử lý hình ảnh, sử dụng trình duyệt hoặc thực hiện nhiều thao tác liên tiếp.
- Giới hạn RAM trong Docker: Container chỉ được sử dụng một phần bộ nhớ, thấp hơn nhu cầu thực tế.
- Chạy mô hình AI trực tiếp trên VPS: Ollama hoặc các công cụ suy luận AI cục bộ có thể cần lượng RAM đáng kể tùy mô hình và cấu hình.
- Rò rỉ bộ nhớ: Ứng dụng hoặc thành phần mở rộng tiếp tục tăng mức sử dụng RAM trong thời gian dài mà không giải phóng tương ứng.
Ngoài ra, nếu VPS chạy đồng thời AI Agent, n8n, PostgreSQL, Redis hoặc các ứng dụng khác, tổng nhu cầu RAM có thể vượt quá tài nguyên sẵn có.
Hướng dẫn fix lỗi Out of Memory khi chạy AI Agent trên VPS
Để khắc phục lỗi OOM, bạn nên thực hiện theo thứ tự: kiểm tra RAM → xác định tiến trình gây lỗi → xem nhật ký hệ thống → bổ sung Swap hoặc điều chỉnh giới hạn bộ nhớ → kiểm tra lại AI Agent.
Hướng dẫn dưới đây sử dụng VPS Ubuntu Linux và thao tác thông qua SSH bằng Xshell hoặc ứng dụng Terminal tương tự. Với Debian, nhiều câu lệnh cũng có thể sử dụng trực tiếp.
Lưu ý trước khi bắt đầu: Nếu đang vận hành AI Agent phục vụ công việc thực tế, hãy sao lưu cấu hình và dữ liệu quan trọng trước khi thay đổi giới hạn tài nguyên hoặc khởi động lại dịch vụ.
Bước 1: Kiểm tra dung lượng RAM và Swap
Trước tiên, đăng nhập VPS qua SSH và chạy lệnh:
free -h
Lệnh này hiển thị thông tin RAM và Swap hiện tại.

Trong kết quả, hãy chú ý:
Thông số Ý nghĩa total Tổng dung lượng bộ nhớ used Bộ nhớ đang được sử dụng free Bộ nhớ chưa được sử dụng available Bộ nhớ ước tính còn khả dụng cho ứng dụng Swap Dung lượng bộ nhớ hoán đổi
Quan trọng: Hãy chú ý cột available thay vì chỉ dựa vào free, vì Linux sử dụng một phần RAM để lưu bộ nhớ đệm có thể thu hồi.
Ví dụ, nếu VPS có 2 GB RAM và dung lượng available liên tục giảm xuống mức rất thấp khi AI Agent hoạt động, đây có thể là dấu hiệu thiếu bộ nhớ.
Để kiểm tra riêng Swap, nhập:
swapon --show
Nếu kết quả không hiển thị thông tin, hệ thống có thể chưa kích hoạt Swap.
Bước 2: Xác định tiến trình gây tràn RAM
Tiếp theo, sử dụng lệnh:
top
Hệ thống sẽ hiển thị danh sách tiến trình đang hoạt động.

Bạn cần quan sát hai cột:
- %MEM: Tỷ lệ RAM được tiến trình sử dụng.
- RES: Dung lượng bộ nhớ vật lý mà tiến trình đang chiếm giữ.
Nhấn phím q để thoát.
Ngoài ra, bạn có thể dùng lệnh sau để hiển thị nhanh 10 tiến trình sử dụng nhiều RAM nhất:
ps aux --sort=-%mem | head -n 11
Nếu danh sách xuất hiện những tiến trình như node, python, chrome hoặc ollama, hãy kiểm tra xem tiến trình nào thuộc AI Agent và có đang tiêu thụ bộ nhớ bất thường hay không.

Không nên kết thúc tiến trình chỉ dựa vào tên hoặc tỷ lệ RAM cao. Một số tiến trình có thể đang thực hiện công việc cần thiết cho hệ thống.
Bước 3: Kiểm tra nhật ký OOM trên VPS
Đây là bước quan trọng để xác định VPS có thực sự gặp lỗi Out of Memory hay không.
Nhập lệnh:
sudo journalctl -k --since "24 hours ago" --no-pager | grep -Ei 'out of memory|oom-kill|killed process'
Lệnh sẽ tìm những thông báo liên quan đến OOM trong nhật ký kernel của 24 giờ gần nhất.
Ví dụ, nếu xuất hiện thông báo dạng:
Out of memory: Killed process 1234 (node)
Điều này cho biết kernel đã kết thúc một tiến trình Node.js để giải phóng bộ nhớ.
Nếu không tìm thấy thông báo, bạn có thể thử:
sudo dmesg -T | grep -Ei 'out of memory|oom-kill|killed process'
Trường hợp VPS vừa khởi động lại, có thể kiểm tra nhật ký lần khởi động trước bằng:
sudo journalctl -k -b -1 --no-pager | grep -Ei 'out of memory|oom-kill|killed process'
Lệnh cuối chỉ có tác dụng khi nhật ký của lần khởi động trước còn được lưu.
Lưu ý: Không tìm thấy thông báo chưa đủ để loại trừ lỗi OOM. Bạn vẫn cần kiểm tra giới hạn bộ nhớ trong Docker hoặc nhật ký riêng của ứng dụng.
Bước 4: Tạo thêm Swap cho VPS
Swap là một vùng lưu trữ trên ổ đĩa được Linux sử dụng để hỗ trợ quản lý bộ nhớ khi RAM chịu áp lực. Bổ sung Swap có thể giúp giảm nguy cơ tiến trình bị kết thúc do thiếu bộ nhớ trong một số trường hợp.
Ví dụ dưới đây hướng dẫn tạo Swap 2 GB trên VPS Ubuntu sử dụng hệ thống tệp thông dụng như ext4.
Chỉ thực hiện khi VPS còn đủ dung lượng ổ đĩa và chưa có Swap phù hợp. Các hệ thống tệp như Btrfs, ZFS hoặc VPS dùng cơ chế quản lý bộ nhớ đặc biệt có thể cần quy trình riêng.
1. Kiểm tra dung lượng ổ đĩa
df -h /
Đảm bảo phân vùng còn đủ dung lượng để tạo tệp Swap 2 GB và vẫn có không gian cho hệ điều hành.

Kiểm tra xem tên tệp dự kiến đã tồn tại hay chưa:
ls -lh /swapfile-ai
Nếu hệ thống báo không tìm thấy tệp, bạn có thể tiếp tục.
2. Tạo tệp Swap 2 GB
sudo dd if=/dev/zero of=/swapfile-ai bs=1M count=2048 status=progress
Chờ quá trình ghi hoàn tất. Không chạy lại lệnh tạo tệp khi /swapfile-ai đã tồn tại.

3. Thiết lập quyền truy cập
sudo chmod 600 /swapfile-ai
4. Định dạng tệp thành Swap
sudo mkswap /swapfile-ai
5. Kích hoạt Swap
sudo swapon /swapfile-ai
6. Kiểm tra kết quả
free -h
Nếu thực hiện thành công, dung lượng Swap của hệ thống sẽ tăng thêm khoảng 2 GB.

7. Thiết lập Swap tự kích hoạt khi VPS khởi động
Trước tiên, sao lưu cấu hình:
sudo cp /etc/fstab /etc/fstab.bak-oom
Sau đó, thêm cấu hình Swap:
echo '/swapfile-ai none swap sw 0 0' | sudo tee -a /etc/fstab
Chỉ thêm dòng cấu hình một lần, tránh tạo các mục trùng lặp.
Lưu ý quan trọng: Swap không phải RAM vật lý. Việc đọc và ghi trên ổ đĩa thường chậm hơn RAM, vì vậy bổ sung Swap chỉ là giải pháp hỗ trợ. Nếu AI Agent liên tục sử dụng lượng lớn Swap, hiệu suất có thể giảm đáng kể.
Bước 5: Xử lý giới hạn RAM nếu chạy AI Agent bằng Docker
Nếu AI Agent được triển khai bằng Docker, bạn cần kiểm tra giới hạn bộ nhớ của container, bởi VPS còn RAM không đồng nghĩa container vẫn còn tài nguyên được phép sử dụng.
Trước tiên, liệt kê container:
docker ps -a
Xác định tên container đang chạy AI Agent.
Tiếp theo, kiểm tra tài nguyên:
docker stats --no-stream
Trong kết quả, cột MEM USAGE / LIMIT hiển thị bộ nhớ container đang sử dụng và giới hạn bộ nhớ tương ứng.

Bạn có thể kiểm tra thông tin OOM bằng lệnh:
docker inspect --format '{{.State.OOMKilled}}' TEN_CONTAINER
Thay TEN_CONTAINER bằng tên thực tế.
- true: Docker ghi nhận container bị kết thúc do OOM.
- false: Trạng thái hiện tại không ghi nhận OOM; vẫn cần xem nhật ký nếu container đã được khởi động lại.

Để xem giới hạn RAM được cấu hình:
docker inspect --format '{{.HostConfig.Memory}}' TEN_CONTAINER
Giá trị được trả về theo byte. Giá trị 0 thường có nghĩa container không được thiết lập giới hạn RAM riêng bằng tùy chọn Docker tương ứng.

Nếu container bị giới hạn RAM quá thấp thì xử lý thế nào?
Bạn có thể tăng giới hạn bộ nhớ, nhưng chỉ khi VPS có đủ tài nguyên để cấp phát thêm.
Ví dụ, với một VPS 4 GB RAM có đủ dung lượng khả dụng, lệnh sau minh họa cách đặt giới hạn RAM container thành 2 GB, tổng RAM và Swap thành 3 GB:
docker update --memory 2g --memory-swap 3g TEN_CONTAINER
Đây chỉ là ví dụ cấu hình, không phải thông số phù hợp cho mọi VPS. Cần tính cả bộ nhớ của hệ điều hành và các dịch vụ khác. Nếu ứng dụng được quản lý bằng Docker Compose, hãy đồng bộ thay đổi trong tệp Compose để tránh mất cấu hình khi tạo lại container.
Với Docker Compose, thuộc tính mem_limit có thể được sử dụng trong cấu hình của service. Chẳng hạn:
services:
ai-agent:
mem_limit: 2g
Đoạn YAML trên chỉ minh họa phần cấu hình bộ nhớ. Không thay thế toàn bộ tệp compose.yaml bằng ví dụ này.
Sau khi chỉnh sửa cấu hình Compose thực tế, kiểm tra cú pháp bằng:
docker compose config
Nếu hợp lệ, thực hiện cập nhật trong thư mục dự án:
docker compose up -d
Lệnh có thể tạo lại container, vì vậy cần sao lưu cấu hình và dữ liệu liên quan trước khi triển khai.
Nếu đang sử dụng VPS AI Agent có sẵn giao diện quản lý do nhà cung cấp triển khai, bạn nên kiểm tra cơ chế quản lý Docker trước khi tự ý thay đổi giới hạn container.
Bước 6: Kiểm tra lại hoạt động của AI Agent
Sau khi áp dụng giải pháp phù hợp, hãy kiểm tra lại hệ thống bằng các thao tác sau:
Kiểm tra RAM và Swap:
free -h
Kiểm tra tiến trình sử dụng bộ nhớ:
top
Nếu sử dụng Docker:
docker stats --no-stream
Nếu cài đặt OpenClaw bằng dịch vụ systemd user tiêu chuẩn, bạn có thể kiểm tra thêm:
systemctl --user status openclaw-gateway.service
Lệnh này cần chạy bằng đúng tài khoản Linux sở hữu dịch vụ OpenClaw. Cách cài đặt khác có thể sử dụng tên hoặc phương thức quản lý dịch vụ khác.
Cuối cùng, hãy gửi một yêu cầu đơn giản cho AI Agent, sau đó chạy lại một tác vụ từng gặp lỗi.
Nếu AI Agent phản hồi bình thường, bộ nhớ không tiếp tục tăng bất thường và không xuất hiện thêm sự kiện OOM trong quá trình theo dõi, giải pháp có thể đã phát huy hiệu quả.
Cách hạn chế lỗi OOM khi vận hành AI Agent
Ngoài xử lý sự cố, bạn nên áp dụng một số biện pháp nhằm giảm nguy cơ tràn RAM trong quá trình sử dụng lâu dài.
- Giới hạn số tác vụ đồng thời: Tránh chạy quá nhiều AI Agent, sub-agent hoặc công việc tự động cùng lúc trên VPS nhỏ.
- Phân chia công việc hợp lý: Với tác vụ xử lý dữ liệu lớn, nên chia thành những phần nhỏ thay vì thực hiện toàn bộ trong một lần.
- Hạn chế dịch vụ không cần thiết: Kiểm tra các container, trình duyệt, công cụ xử lý nền hoặc dịch vụ phụ đang chiếm RAM.
- Theo dõi bộ nhớ định kỳ: Sử dụng free, top, docker stats hoặc hệ thống giám sát máy chủ để phát hiện mức tiêu thụ bất thường.
- Kiểm tra Plugin và Skill: Những thành phần mở rộng chạy thêm tiến trình hoặc trình duyệt có thể làm tăng nhu cầu RAM.
- Sử dụng mô hình AI qua API khi phù hợp: Nếu VPS chỉ cần vận hành AI Agent, việc sử dụng mô hình từ nhà cung cấp bên ngoài có thể tránh phải lưu và chạy toàn bộ mô hình ngôn ngữ trực tiếp trên máy chủ.
- Cập nhật ứng dụng có kiểm soát: Theo dõi các bản sửa lỗi hiệu năng hoặc bộ nhớ, sao lưu trước khi nâng cấp và kiểm tra tương thích.
Đối với OpenClaw, tài liệu chính thức cũng đề cập việc giảm tác vụ đồng thời, tăng giới hạn bộ nhớ hoặc sử dụng cơ chế kiểm soát tài nguyên khi VPS liên tục gặp OOM.
Không nên tắt OOM Killer để xử lý thiếu RAM. Docker cảnh báo rằng việc vô hiệu hóa cơ chế bảo vệ khi tài nguyên không được kiểm soát đúng cách có thể khiến toàn bộ máy chủ gặp sự cố nghiêm trọng.

Khi nào cần nâng cấp RAM VPS?
Bạn nên cân nhắc nâng cấp RAM khi các giải pháp giảm tải, cấu hình lại giới hạn bộ nhớ và bổ sung Swap không còn đáp ứng được nhu cầu vận hành.
Một số dấu hiệu đáng chú ý:
- RAM khả dụng liên tục ở mức rất thấp trong giờ hoạt động bình thường.
- AI Agent thường xuyên gặp OOM khi thực hiện các tác vụ cần thiết.
- Hệ thống sử dụng Swap nhiều, kéo theo tốc độ xử lý chậm.
- VPS chạy nhiều ứng dụng cùng lúc và không thể giảm thêm số tiến trình.
- Nhu cầu sử dụng mô hình AI cục bộ, nhiều Agent hoặc các công cụ xử lý dữ liệu ngày càng tăng.
Không có một mức RAM cố định phù hợp với mọi AI Agent. Cấu hình cần thiết phụ thuộc vào nền tảng, số lượng tác vụ đồng thời, thành phần mở rộng, mô hình AI và các dịch vụ chạy cùng VPS.
Do đó, nên lựa chọn dung lượng RAM dựa trên mức sử dụng thực tế và nhu cầu mở rộng, thay vì nâng cấp chỉ vì thấy chỉ số RAM đã dùng ở mức cao tại một thời điểm.
Kết luận
Lỗi Out of Memory khi chạy AI Agent trên VPS thường liên quan đến thiếu bộ nhớ khả dụng, giới hạn tài nguyên hoặc mức tiêu thụ RAM quá cao. Để khắc phục hiệu quả, bạn nên kiểm tra nhật ký OOM, xác định tiến trình gây lỗi và lựa chọn giải pháp phù hợp như giảm tác vụ đồng thời, bổ sung Swap hoặc điều chỉnh cấu hình Docker.
Nếu tình trạng thiếu bộ nhớ vẫn thường xuyên xảy ra, nâng cấp RAM VPS sẽ là hướng xử lý bền vững hơn, đặc biệt khi AI Agent cần hoạt động liên tục và xử lý nhiều công việc.
Những câu hỏi thường gặp
Khởi động lại VPS có giúp xử lý lỗi Out of Memory không?
Khởi động lại có thể giải phóng bộ nhớ đang được các tiến trình sử dụng và giúp hệ thống hoạt động trở lại tạm thời. Tuy nhiên, nếu nguyên nhân xuất phát từ thiếu RAM, giới hạn container hoặc rò rỉ bộ nhớ, sự cố có thể tiếp diễn. Bạn nên kiểm tra nhật ký trước khi khởi động lại nếu vẫn có thể truy cập máy chủ.
Vì sao Docker bị OOMKilled dù VPS vẫn còn RAM trống?
Nguyên nhân phổ biến là container đang bị giới hạn bộ nhớ riêng. Khi mức sử dụng vượt ngưỡng cho phép, tiến trình có thể bị kết thúc dù hệ thống vẫn còn RAM khả dụng. Hãy kiểm tra cấu hình Docker, giới hạn memory cgroup và các sự kiện OOM trước khi quyết định tăng dung lượng RAM cho VPS.
Chạy AI Agent bằng API có cần VPS nhiều RAM không?
Vẫn cần RAM để vận hành AI Agent, quản lý phiên làm việc, chạy công cụ và xử lý dữ liệu. Tuy nhiên, nếu mô hình AI được xử lý trên máy chủ của nhà cung cấp API, VPS thường không phải tải toàn bộ trọng số mô hình vào bộ nhớ. Nhu cầu RAM thực tế phụ thuộc vào các tác vụ và công cụ đi kèm.
Exit Code 137 có chắc chắn là lỗi Out of Memory không?
Không. Exit Code 137 thể hiện tiến trình bị kết thúc bằng tín hiệu SIGKILL. Ngoài lỗi OOM, tín hiệu này còn có thể phát sinh từ thao tác kết thúc tiến trình hoặc những tình huống quản lý container khác. Cần kết hợp nhật ký kernel, trạng thái Docker và dữ liệu sử dụng RAM để xác định nguyên nhân.
