
Trả lời nhanh: Mỗi MCP server đơn giản chiếm khoảng 50 tới 200MB RAM khi rảnh, con số tăng lên khi nó giữ bộ nhớ đệm hoặc kết nối database. Năm tới mười server chạy chung trên một VPS 4GB là bình thường. Điều cần chú ý không phải RAM mà là quản lý: mỗi server một cổng riêng, một tệp cấu hình rõ ràng, và có cách khởi động lại tự động khi lỗi. Gom nhiều chức năng vào một server chỉ nên làm khi chúng dùng chung nguồn dữ liệu.
Bắt đầu với một MCP server thì đơn giản. Tới cái thứ năm là bắt đầu quên cái nào chạy ở cổng nào, cái nào chết lúc nào.
- Mỗi server nhẹ, nhưng cộng dồn và cộng thêm phần bộ nhớ đệm thì đáng kể.
- Vấn đề thật là quản lý chứ không phải tài nguyên: cổng, cấu hình, khởi động lại.
- Dùng trình quản lý tiến trình để tự khởi động lại khi lỗi.
- Chỉ gom chung khi các chức năng dùng chung nguồn dữ liệu.
Tính RAM cho nhiều server
| Số server | RAM ước tính | VPS gợi ý |
|---|---|---|
| 1 tới 3 | dưới 1GB | 4GB là dư |
| 4 tới 8 | 1 tới 2GB | 4GB |
| trên 8, có server giữ bộ nhớ đệm | 2 tới 4GB | 8GB |
Con số trên chưa tính database. Nếu một trong các server phục vụ database, hãy tính RAM cho database riêng vì đó mới là phần ăn bộ nhớ nhiều nhất.
Ba việc phải làm khi số server tăng
Đặt cổng có quy tắc
Ví dụ nhóm theo dải: 7101 cho tra cứu mã nguồn, 7102 cho database, 7103 cho dịch vụ ngoài. Ghi lại trong một file để không phải đoán.
Dùng trình quản lý tiến trình
Đừng chạy tay rồi để đó. Dùng systemd hoặc trình quản lý tiến trình để server tự bật lại khi lỗi và tự chạy sau khi máy khởi động lại.
Ghi log riêng cho từng server
Khi có sự cố, log gộp chung là ác mộng. Mỗi server một file log giúp khoanh vùng trong vài giây.
Gom lại hay tách ra
Nên gom khi các chức năng dùng chung nguồn dữ liệu, ví dụ nhiều thao tác trên cùng một database. Gom lại giúp dùng chung kết nối và bộ nhớ đệm, tiết kiệm cả RAM lẫn thời gian.
Nên tách khi các chức năng độc lập nhau và bạn muốn một cái lỗi không kéo cái khác chết theo. Tách cũng dễ khởi động lại riêng lẻ hơn.
Nguyên tắc đơn giản: tách theo nguồn dữ liệu, không tách theo chức năng.
Tính bộ nhớ theo loại dịch vụ
| Loại dịch vụ | Bộ nhớ mỗi cái | Ghi chú |
|---|---|---|
| Đọc tệp, gọi API đơn giản | 50 tới 150 MB | Nhẹ, chạy chục cái cùng lúc vẫn ổn |
| Nối tới cơ sở dữ liệu | 150 tới 400 MB | Phần lớn là bể kết nối và bộ nhớ đệm |
| Xử lý tài liệu, tìm kiếm ngữ nghĩa | 500 MB tới 2 GB | Nặng nhất, thường là thứ quyết định cấu hình máy |
| Chạy trình duyệt tự động | 1 tới 2 GB mỗi phiên | Rất nặng, nên tách ra máy riêng |
Cách tính thực dụng: cộng bộ nhớ của tất cả dịch vụ, nhân 1,5 để có phần dư cho hệ điều hành và các đợt cao điểm, rồi làm tròn lên mức gói tiếp theo.
# Xem tung dich vu an bao nhieu bo nho that ps -eo pid,rss,comm --sort=-rss | head -20 docker stats --no-stream # Dat gioi han cho tung dich vu, tranh mot cai di hoang keo ca may xuong # trong docker-compose.yml: # deploy: # resources: # limits: # memory: 512M # Theo doi qua thoi gian de biet dinh that vmstat 5 60
Ba việc phải làm khi số dịch vụ tăng
- Đặt giới hạn bộ nhớ cho từng dịch vụ. Không đặt thì một dịch vụ rò rỉ bộ nhớ sẽ kéo cả máy chết, và bạn mất tất cả cùng lúc.
- Đặt tự khởi động lại khi dịch vụ chết. Với hơn năm dịch vụ, việc theo dõi thủ công là không khả thi.
- Gom nhật ký về một chỗ và đặt giới hạn kích thước. Nhật ký của mười dịch vụ làm đầy ổ đĩa nhanh hơn bạn nghĩ.
Dấu hiệu nên gom và dấu hiệu nên tách
- Gom trên một máy khi: các dịch vụ nhẹ, cùng thuộc một dự án, và tổng bộ nhớ còn xa mức giới hạn. Rẻ hơn và dễ quản lý hơn.
- Tách ra máy riêng khi: có dịch vụ nặng chạy trình duyệt tự động; hoặc có dịch vụ chạm tới dữ liệu nhạy cảm cần cách ly; hoặc một nhóm dịch vụ phục vụ khách hàng và không được chết vì việc thử nghiệm.
- Nguyên tắc thực dụng: bắt đầu trên một máy, tách ra khi đo được điểm nghẽn thật, đừng tách sớm vì mỗi máy thêm là thêm việc vận hành.
Câu hỏi thường gặp
Một VPS 4GB chạy được bao nhiêu MCP server?
Thường 5 tới 10 server đơn giản chạy thoải mái. Con số giảm nếu có server giữ bộ nhớ đệm lớn hoặc kèm database trên cùng máy.
Làm sao biết server nào đang ngốn RAM?
Chạy lệnh top rồi sắp xếp theo bộ nhớ, hoặc dùng ps để xem theo tên tiến trình. Đặt tên tiến trình rõ ràng ngay từ đầu giúp việc này dễ hơn nhiều.
Server chết giữa chừng thì sao?
Dùng trình quản lý tiến trình để tự khởi động lại. Không có nó thì bạn chỉ phát hiện khi agent báo lỗi không gọi được.
Nên đặt tất cả trên một VPS hay chia nhiều máy?
Một máy nếu chúng phục vụ cùng một dự án, vì gọn và không tốn độ trễ mạng. Chia máy khi cần cách ly giữa các khách hàng hoặc các môi trường.
Bài viết liên quan
Chưa cần VPS? Hosting cPanel của TND đã sẵn sàng cho AI
Mở sẵn SSH, Git, Node.js và cổng MCP của cPanel. Nối Claude Code, Codex hay Gemini vào là làm việc được, từ 59.000đ/tháng.
Xem web hosting sẵn sàng cho AI- Lỗi fetch control key và invalid key trong Tailscale
- Tailscale trên macOS: App Store, standalone hay brew?
- CGNAT là gì? Vì sao không mở port được và lối thoát
- Database MySQL và PostgreSQL chậm: 6 nguyên nhân thường gặp
- Giá OpenRouter: đọc bảng giá, model free và mẹo tiết kiệm
- MCP là gì? Chuẩn cắm công cụ cho AI agent, nói dễ hiểu



