Triển Khai Rails 8 + SolidQueue, SolidCache & Kamal 2 Trên Một VPS NVMe
Cắt bỏ hoàn toàn hóa đơn Managed Redis, Sidekiq và Cloud Postgres bằng kiến trúc tách 4 tệp SQLite WAL độc lập trên một máy chủ NVMe tốc độ cao.
- MỤC TIÊU THÔNG LƯỢNG MÔ HÌNH
- 4x Isolated WALs
- ĐẶC TÍNH ĐỌC / RPO
- 0.42 ms
- PHÂN KHÚC MÁY CHỦ THAM CHIẾU
- $10.49–$48 NVMe
Rails 8 đưa SQLite lên hàng cơ sở dữ liệu hạng nhất cho Production nhờ bộ ba SolidQueue, SolidCache, SolidCable cùng cơ chế tự động bật WAL và BEGIN IMMEDIATE trong ActiveRecord. Bí quyết cốt lõi khi chạy Kamal 2 là tách thành 4 tệp vật lý riêng biệt (`production.sqlite3`, `queue.sqlite3`, `cache.sqlite3`, `cable.sqlite3`) để các luồng xóa cache hay quét job ngầm không bao giờ tranh khóa ghi với đơn hàng của khách.
Trong bản vẽ lưu trữ BP-04 trên SQLiteEdge, mọi tham số dưới đây bám sát tài liệu SQLite 3.46 và biểu phí nhà cung cấp đối chiếu ngày 2026-11-12.
Nguyên Tắc Thiết Kế SQLiteEdge Cho Triển Khai Rails 8 + SolidQueue, SolidCache & Kamal 2 Trên Một VPS NVMe
- Khai báo 4 nhánh cơ sở dữ liệu riêng dưới mục production: trong config/database.yml — mỗi tệp SQLite sở hữu khóa ghi đơn luồng và tệp -wal độc lập hoàn toàn!
- Mount thư mục /var/lib/kamal-storage:/rails/storage trực tiếp vào ổ NVMe của máy chủ vật lý để mỗi lần deploy container mới dữ liệu vẫn nguyên vẹn.
- Cấp phát thoải mái 20 GB – 60 GB ổ NVMe cho SolidCache thay vì tốn $120/tháng thuê gói Managed Redis chỉ vẻn vẹn 2 GB RAM.
- Chỉ cấu hình Litestream sao lưu tệp production.sqlite3 (và queue.sqlite3 nếu cần) — loại trừ tệp cache để tiết kiệm 100% băng thông S3.
Mẫu Cấu Hình SQLiteEdge: config/database.yml (Cấu Hình Đa Tệp SQLite Chuẩn Rails 8)
default: &default
adapter: sqlite3
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 8 } %>
timeout: 5000
pragmas:
journal_mode: wal
synchronous: normal
mmap_size: 4294967296
cache_size: -524288
journal_size_limit: 67108864
production:
primary:
<<: *default
database: storage/production.sqlite3
queue:
<<: *default
database: storage/production_queue.sqlite3
cache:
<<: *default
database: storage/production_cache.sqlite3
cable:
<<: *default
database: storage/production_cable.sqlite3
Bảng Mô Hình Thông Số & Chi Phí SQLiteEdge (BP-04)
Các mức giá tham khảo cập nhật ngày 2026-11-12 từ trang công khai của hãng (giá có thể thay đổi khi thanh toán); thông số thông lượng là ước tính mô hình lý thuyết, hãy tự xác thực bằng fio trên máy chủ của bạn.
| Hạng Mục Hạ Tầng | Cụm Heroku / AWS Managed | Rails 8 + Kamal Trên NVMe VPS |
|---|---|---|
| Web + Worker Compute (16GB) | $250 / tháng (Dynos / ECS) | Gói gọn trong VPS NVMe $10.49–$48 |
| Cơ Sở Dữ Liệu Chính (50 GB) | $165 / tháng (Managed Postgres) | production.sqlite3 ($0 phụ phí) |
| Hàng Đợi Job + Bộ Đệm Cache | $115 / tháng (Managed Redis) | SolidQueue + SolidCache trên NVMe ($0) |
| Tổng Chi Phí Hàng Tháng | $530.00 / tháng | $16.49 – $54.00 / tháng (kèm $6 DR) |
Cấu Hình Máy Chủ NVMe & Kho S3 Khớp Bản Vẽ BP-04 Trên SQLiteEdge
-
Vultr High Frequency 3.5GHz+ Ổ NVMe Cục Bộ (Độ Trễ fsync Cực Thấp)Xem Gói Vultr Cho BP-04 Trên SQLiteEdge →
Xung đơn nhân 3.7GHz+ & NVMe trực tiếp • fsync ~0.045ms đẩy kịch trần TPS ghi đơn luồng SQLite WAL (https://www.vultr.com/pricing/) -
InterServer Storage $6 Khóa Giá Trọn Đời (Đích Lưu Trữ S3 / MinIO Cho Litestream)Xem Kho S3 InterServer Cho BP-04 Trên SQLiteEdge →
Chỉ $6/tháng khóa giá trọn đời cho 1TB • $0 phí lệnh PUT S3 khi stream WAL mỗi giây bằng Litestream (https://www.interserver.net/vps/)
Câu Hỏi Kỹ Thuật SQLiteEdge Cho Bản Vẽ BP-04
-
Tiến trình SolidQueue quét job liên tục có làm nghẽn lệnh ghi của người dùng không?
Hoàn toàn không khi bạn tách queue.sqlite3 thành tệp riêng trong database.yml! Khóa ghi của SQLite tính theo từng tệp độc lập, nên SolidQueue ghi thoải mái vào tệp queue trong khi giao dịch khách hàng toàn quyền sử dụng tệp primary.
-
Nên chọn Hostinger EPYC KVM hay Vultr High Frequency cho cụm Kamal 2?
Khởi đầu tối ưu nhất với Hostinger KVM 4 (4 vCPU / 16GB / 200GB NVMe giá $10.49/tháng); nâng cấp lên Vultr 3.5GHz+ High Frequency khi SolidQueue xử lý trên 1.500 job/giây hoặc cần xung đơn nhân cao cho Ruby.