Khám phá Learn Học nhanh Stream About Jokes
COHORT 2 Foundation — Claude Code — 3 buổi Zoom · 21 · 24 · 28/07, 20:00 Đăng ký →
Bài viết

? Giữ n8n nhẹ nhàng: Cách tự động xoá workflow execution cũ và tối ưu database

Giới thiệu n8n là một trong những công cụ automation mã nguồn mở được yêu thích nhất hiện nay. Tuy nhiên, nếu bạn tự host n8n (Docker/VPS), sẽ nhanh chóng nhận ra: sau vài tuần, database trở nên cực

Công cụ & Stack

Giới thiệu

n8n là một trong những công cụ automation mã nguồn mở được yêu thích nhất hiện nay. Tuy nhiên, nếu bạn tự host n8n (Docker/VPS), sẽ nhanh chóng nhận ra: sau vài tuần, database trở nên cực kỳ nặng do ghi lại tất cả execution logs.

Kết quả? n8n chạy chậm, tốn RAM, thừa lừ dẫn đến crash khi truy cập UI.

Trong bài này, mình chia sẻ cách cấu hình tự động dọn dữ liệu execution cũ + VACUUM lại SQLite mỗi lần khởi động, giúp n8n nhẹ và ổn định lâu dài.

Dành cho: ai tự host n8n (Docker, VPS, Pi), nhất là dùng SQLite

Kết quả sau khi cài

Database tự dọn log execution > 7 ngày

Tự động giới hạn số record (để SQLite không phình to vô hạn)

Hiệu năng UI và truy vấn cải thiện

Các bước thực hiện

Bước 1: Thêm các biến môi trường vào .env hoặc file docker-compose.yml

# Tự động xóa execution cũ
dotenv
EXECUTIONS_DATA_PRUNE=true

# Xóa những execution lâu hơn 7 ngày (168 giờ)
EXECUTIONS_DATA_MAX_AGE=168

# Giới hạn tối đa 50.000 execution logs
EXECUTIONS_DATA_PRUNE_MAX_COUNT=50000

# Tự động VACUUM khi khởi động n8n
DB_SQLITE_VACUUM_ON_STARTUP=true

⚠️ Lưu ý: Chỉ hoạt động với SQLite, không có VACUUM cho Postgres.

Bước 2: Restart n8n

docker compose restart  # hoặc docker restart container

Sau khi khởi động lại, n8n sẽ tự:

  • Xóa execution > 7 ngày hoặc vượt 50k logs

  • VACUUM SQLite database để thu hồi dung lượng

Lỗi phổ biến & cách xử lý

n8n không xóa execution dù đã set .env

✨ Đảm bảo restart sau khi thay đổi file .env

✨ Kiểm tra logs khi khởi động xem biến môi trường đã được nạp

SQLite vẫn nặng sau VACUUM

VACUUM chỉ có tác dụng khi execution đã bị xoá

✨ Có thể dùng sqlite3 CLI để kiểm tra size

Mẹo & tối ưu nâng cao

  • Dùng PostgreSQL nếu scale lớn, SQLite chỉ hợp cho instance nhỏ

  • Dùng n8n pruning CLI (nếu muốn xóa theo batch hoặc theo workflow ID)

  • Cài cron job backup SQLite để khôi phục khi có sự cố

Tài liệu tham khảo

  • n8n Environment Variables

  • SQLite VACUUM doc

  • n8n Community Tips

?‍♂️ Kết luận & mời gọi thảo luận

Giới hạn execution logs và VACUUM SQLite là bước cần thiết giúp n8n chạy nhẹ nhàng và ổn định khi tự host. Nhất là với người dùng n8n như task scheduler hoặc webhook pipeline.

Bài liên quan

Bài viết liên quan

Tự động hoá hậu kỳ cho screen recording — tới đâu là hết

idea

Dựng một screen recording tốn thời gian nhất ở khâu ít cần suy nghĩ nhất: cắt khoảng lặng, tua đoạn ngồi chờ, thêm zoom. Để máy làm hết phần đó, mình còn nguyên sức cho phần thật sự quyết định video hay hay dở.

Cho agent thảo luận để ra kết quả, đừng cho chúng nói chuyện tự do

idea

Nhiều người thích "cho mấy con agent nói chuyện với nhau". Nghe cũng hợp lý: một agent làm được việc, thì vài con ngồi trao đổi chắc sẽ làm tốt hơn. Nhưng nói chuyện tự do thường ra kết quả ba phải và thành một cái chợ.

0:00

Chia sẻ ảnh

Bắt đầu gõ để tìm kiếm...