Back to articles
Technology Insight

Tối ưu hóa PocketBase trên VPS 2$: Đạt 30,000+ Requests/giây cho hệ thống Single-file Backend

June 3, 2026

Giới thiệu xu hướng Single-file Backend và Sức mạnh của PocketBase

Trong kỷ nguyên kiến trúc microservices và hạ tầng đám mây phân tán ngày càng trở nên phức tạp và đắt đỏ, mô hình Single-file Backend đang trỗi dậy như một giải pháp cứu cánh đầy hiệu quả cho các kỹ sư công nghệ và startup công nghệ. Tiêu biểu cho xu hướng tinh gọn này chính là PocketBase—một framework mã nguồn mở được viết bằng ngôn ngữ Go tích hợp sẵn cơ sở dữ liệu nhúng SQLite, hệ thống chứng thực người dùng (Authentication), quản lý tệp tin và cơ chế Realtime WebSockets chỉ trong một tệp thực thi duy nhất.

Nhiều nhà phát triển thường hoài nghi về khả năng chịu tải của các hệ thống sử dụng SQLite và chạy trên phần cứng giới hạn. Tuy nhiên, với các kỹ thuật tinh chỉnh hạ tầng chuẩn xác, một cấu hình hạ tầng ảo hóa (VPS) với mức giá tối giản chỉ 2 USD/tháng (ví dụ từ các nhà cung cấp như IONOS hoặc các gói khuyến mãi) hoàn toàn có thể cán mốc xử lý kinh ngạc: trên 30,000 Requests/giây (RPS). Bài viết dưới đây sẽ phân tích chuyên sâu các giải pháp tối ưu từ cấp độ hệ điều hành đến kiến trúc tầng ứng dụng nhằm hiện thực hóa con số ấn tượng này.

1. Cấu hình SQLite tối ưu: Chìa khóa vàng cho I/O Tốc độ cao

Mặc định, PocketBase đã kích hoạt chế độ WAL (Write-Ahead Logging) giúp tăng tốc hiệu năng ghi và cho phép đọc song song. Tuy nhiên, để đáp ứng cường độ truy cập đồng thời khổng lồ lên tới hàng chục nghìn kết nối mỗi giây, hệ thống tệp cơ sở dữ liệu cần được tinh chỉnh thêm các tham số Pragmas quan trọng thông qua mã nguồn mở rộng (Go/JS App Hooks):

  • Synchronous = NORMAL: Giảm tần suất đồng bộ dữ liệu trực tiếp xuống đĩa cứng sau mỗi giao dịch ghi mà vẫn đảm bảo tính toàn vẹn dữ liệu trong chế độ WAL, giúp giải phóng hoàn toàn nghẽn cổ chai I/O đĩa.
  • Journal Size Limit: Giới hạn kích thước tệp log WAL tránh việc phình to dung lượng không kiểm soát gây suy giảm hiệu năng tìm kiếm tệp tin.
  • Cache Size: Tăng kích thước bộ nhớ đệm trang (Page Cache) của SQLite lên mức phù hợp để tối đa hóa tỷ lệ dữ liệu nằm trên RAM, hạn chế tối đa việc truy xuất vào bộ nhớ lưu trữ NVMe SSD của VPS.
Lưu ý từ chuyên gia: Bằng cách thiết lập bộ lọc kết nối thông minh và áp dụng cơ chế điều phối Connection Pool động, chúng ta cân bằng được tài nguyên phần cứng cực kỳ hạn chế của dòng VPS giá rẻ.

2. Tối ưu hóa Hệ điều hành Linux (Sysctl & Limits)

Khi tiến hành kiểm thử hiệu năng chịu tải (Load Testing) ở ngưỡng 30,000 RPS, rào cản đầu tiên hệ thống vấp phải thường không nằm ở mã nguồn ứng dụng mà ở giới hạn cấu hình mặc định của hạt nhân (Kernel) Linux trên VPS. Hãy thực hiện cấu hình các tham số hệ thống sau để mở rộng băng thông xử lý:

Tăng giới hạn File Descriptors

Mỗi kết nối mạng HTTP/WebSocket được Linux xử lý như một tệp tin. Giới hạn mặc định thường chỉ là 1024 tệp mở đồng thời. Cần điều chỉnh tệp cấu hình /etc/security/limits.conf:

* soft nofile 1048576
* hard nofile 1048576

Tối ưu hóa Network Stack bằng Sysctl

Chèn thêm các thông số sau vào tệp /etc/sysctl.conf để tăng khả năng xếp hàng và tái sử dụng các kết nối TCP nhanh chóng, tránh tình trạng tràn bộ đệm mạng:

  • net.core.somaxconn = 65535: Tăng độ dài hàng đợi lắng nghe kết nối socket.
  • net.ipv4.tcp_tw_reuse = 1: Cho phép tái sử dụng các socket ở trạng thái TIME_WAIT cho các kết nối mới.
  • net.ipv4.tcp_max_syn_backlog = 3240000: Nâng cao khả năng chịu tải trước các đợt bùng nổ yêu cầu kết nối đồng thời.

3. Chiến lược Sử dụng Bộ nhớ Đệm (Caching) và Bỏ qua Tính toán Tổng

Để đạt được chỉ số RPS vượt trội, nguyên tắc bất di bất dịch là tránh lặp lại các tác vụ tính toán đắt đỏ hoặc truy vấn đĩa trùng lặp.

Sử dụng tham số skipTotal=1

Mặc định, các API danh sách (List/Search) của PocketBase luôn thực hiện một câu lệnh truy vấn phụ COUNT để tính toán tổng số bản ghi và tổng số trang phục vụ phân trang (Pagination). Với cơ sở dữ liệu lớn, thao tác này cực kỳ tốn tài nguyên. Bằng cách truyền thêm tham số bộ lọc ?skipTotal=1 trên Client SDK, PocketBase sẽ bỏ qua bước này, giúp tốc độ phản hồi của API tăng vọt.

Áp dụng In-memory Cache trên tầng định tuyến

Với các dữ liệu ít biến động như danh mục sản phẩm, cấu hình hệ thống hay thông tin bài viết công khai, hãy tận dụng tính năng tùy biến Route bằng Go hoặc JavaScript (goja) trong PocketBase để lưu trữ kết quả trả về trực tiếp trên bộ nhớ RAM. Ứng dụng sẽ phản hồi ngay lập tức cho client mà không cần kích hoạt bất kỳ truy vấn nào xuống tầng SQLite.

4. Triển khai Thực tế: Sử dụng Caddy Server làm Reverse Proxy siêu nhẹ

Tránh sử dụng các giải pháp Reverse Proxy cồng kềnh tiêu tốn quá nhiều RAM. Caddy Server là sự lựa chọn tối ưu khi kết hợp với PocketBase nhờ kiến trúc xử lý hướng sự kiện viết bằng Go, tự động cấu hình chứng chỉ bảo mật SSL/TLS miễn phí từ Let's Encrypt với lượng chiếm dụng tài nguyên CPU/RAM cực kỳ thấp.

Cấu hình một tệp Caddyfile tinh gọn giúp chuyển tiếp luồng dữ liệu trực tiếp đến cổng nội bộ của PocketBase (mặc định là 8090) mà không sinh ra thêm độ trễ trung gian:

yourdomain.com {
    reverse_proxy 127.0.0.1:8090 {
        header_up X-Real-IP {remote_host}
    }
}

Kết luận và Đánh giá Đánh đổi (Trade-offs)

Con số 30,000+ Requests/giây trên một chiếc VPS cấu hình tối giản giá 2 USD chứng minh rằng việc thiết kế hệ thống tinh gọn, am hiểu sâu sắc cơ chế hoạt động của SQLite và hệ điều hành có giá trị tối ưu vượt trội so với việc lãng phí ngân sách vào hạ tầng phần cứng đắt đỏ.

Tuy nhiên, kiến trúc Single-file Backend của PocketBase cũng đặt ra những thách thức buộc các kỹ sư hệ thống phải cân nhắc:

  • Khả năng mở rộng theo chiều ngang (Horizontal Scaling): Hệ thống chỉ có thể nâng cấp theo chiều dọc (Vertical Scaling). Do gắn chặt với SQLite, bạn không thể nhân bản ứng dụng ra nhiều máy chủ mà không có giải pháp đồng bộ chuyên biệt.
  • Độ sẵn sàng cao (High Availability): Khi máy chủ vật lý gặp sự cố, hệ thống sẽ tạm thời gián đoạn. Cần tích hợp các công cụ sao lưu thời gian thực như Litestream để đảm bảo an toàn dữ liệu và khôi phục thảm họa nhanh chóng.

Tóm lại, đối với các sản phẩm MVP, ứng dụng dành cho startup, hoặc hệ thống SaaS quy mô vừa và nhỏ, giải pháp tối ưu hóa PocketBase này mang lại hiệu quả chi phí tối ưu trên từng đồng đầu tư hạ tầng.

Tối ưu hóa PocketBase trên VPS 2$: Đạt 30,000+ Requests/giây cho hệ thống Single-file Backend | DPTCloud