HẠ TẦNG RIÊNG TƯ / KHÔNG CẦN IDĐọc học thuyết về quyền riêng tư
Ghi chú thực địa KoalaVPS

Hãy biến agent thành một dịch vụ, không phải một terminal bị lãng quên.

Chạy các tiến trình chạy dài với trạng thái rõ ràng, quyền hạn có giới hạn và kế hoạch khôi phục.

Đóng gói worker

Sử dụng runtime được hỗ trợ, phụ thuộc được ghim phiên bản và trình quản lý dịch vụ hoặc container. Cấu hình giới hạn khởi động lại và một người dùng dịch vụ riêng. Giữ thông tin xác thực nhà cung cấp riêng tư trong cấu hình được bảo vệ bên ngoài các tệp công khai của ứng dụng.

Lưu tiến trình trước khi các hành động trở nên quan trọng

Sử dụng hàng đợi hoặc cơ sở dữ liệu bền vững cho các tác vụ. Gán một mã định danh thao tác duy nhất, ghi lại các yêu cầu bên ngoài và đối soát các kết quả không chắc chắn. Việc khởi động lại không nên gửi email thứ hai, tạo đơn hàng thứ hai hoặc tính phí hai lần.

Thêm khả năng quan sát hữu ích

Theo dõi việc hoàn thành công việc, tuổi hàng đợi, tỷ lệ lỗi và chi phí thay vì chỉ kiểm tra xem một tiến trình có tồn tại hay không. Giữ nhật ký đủ nhỏ để xem xét và che các token, lời nhắc và tài liệu không cần lưu giữ.

Đặt một giới hạn rõ ràng

Giới hạn chi tiêu cho mô hình, số tác vụ trình duyệt đồng thời, thời gian chạy và số lần thử lại. Giữ một công tắc tạm dừng dễ dùng và một quy trình con người xem xét cho các hành động hệ trọng. Một worker nhỏ hơn, được giám sát tốt dễ tin cậy hơn một worker không bị giới hạn.

Sử dụng trình giám sát và lịch trình có chủ đích

Systemd và Docker là những cách phổ biến để giữ cho một tiến trình tồn tại khi ngắt kết nối terminal. Đối với dịch vụ systemd, Type=exec có thể báo cáo lỗi thực thi trực tiếp hơn so với khởi chạy nền đơn giản, và Restart=on-failure có thể khởi động lại các lần thất bại với chính sách có giới hạn. Các tác vụ theo lịch trình nên tránh chạy chồng chéo. Hãy chỉ định rõ thư mục làm việc, người dùng dịch vụ và môi trường. Ví dụ giả định người dùng koala-agent, môi trường ảo, mô-đun worker và tệp môi trường riêng đã tồn tại; hãy điều chỉnh chúng trước khi cài đặt một unit.

  • Sử dụng một tài khoản dịch vụ riêng
  • Đặt độ trễ khởi động lại và giới hạn lỗi
  • Kiểm tra trạng thái công việc trước đó trước khi bắt đầu một lần chạy theo lịch
[Unit]
Description=Example agent worker
After=network-online.target

[Service]
Type=exec
User=koala-agent
WorkingDirectory=/opt/koala-agent
EnvironmentFile=/etc/koala-agent.env
ExecStart=/opt/koala-agent/.venv/bin/python -m worker
Restart=on-failure
RestartSec=10
NoNewPrivileges=true

[Install]
WantedBy=multi-user.target

Đặt ngân sách hàng ngày và ranh giới trùng lặp

Đặt cho worker số yêu cầu tối đa, giới hạn chi tiêu và thời gian chờ thực thi. Dùng bản ghi idempotency bền vững cho các hành động ảnh hưởng đến thế giới bên ngoài. Một cú nhấp chuột thành công trên trình duyệt có thể xảy ra trước khi tiến trình nhận được phản hồi; hãy kiểm tra trạng thái bên ngoài trước khi thử lại. Các mount bí mật của Docker Compose có thể giữ bí mật ngoài image, nhưng quyền và ứng dụng tiêu thụ vẫn cần được xem xét.

Đặt chính sách bắt kịp rõ ràng cho một tác vụ định kỳ

Dùng dịch vụ chạy dài hạn cho trình xử lý hàng đợi liên tục và dịch vụ oneshot kích hoạt bằng bộ hẹn giờ cho tác vụ theo lịch có giới hạn. Với bộ hẹn giờ lịch systemd, Persistent=true có thể kích hoạt một lần bị lỡ sau thời gian ngừng hoạt động; nó không tạo lại toàn bộ tồn đọng nghiệp vụ. Quyết định xem việc bắt kịp đó có mong muốn không. RandomizedDelaySec có thể phân tán thời điểm khởi động, trong khi lease ở cấp ứng dụng ngăn hai bản sao xử lý cùng công việc theo lịch.

  • Ghi lại múi giờ dự kiến và kiểm tra thời gian chạy tiếp theo trước khi bật lịch trình.
  • Giữ thời hạn thực thi của tác vụ ngắn hơn khoảng thời gian không được chồng lấn, hoặc sử dụng hợp đồng thuê bền vững với thời hạn và quyền sở hữu.
  • Hãy để tác vụ chọn công việc chưa hoàn thành từ trạng thái đã lưu thay vì giả định rằng mọi sự kiện hẹn giờ trước đó đều đã chạy.
  • Kiểm tra phiên bản systemd đã cài đặt trước khi dùng một chỉ thị từ hướng dẫn mới nhất.
# Read-only checks after creating your own matching units.
systemctl list-timers --all
systemctl status koala-agent.service
journalctl -u koala-agent.service --since today --no-pager

Phân biệt vòng lặp sự cố với một worker bị treo

Chính sách khởi động lại có thể khôi phục một tiến trình bị lỗi, nhưng việc lặp lại thông tin xác thực không hợp lệ hoặc một migration hỏng vài giây một lần khiến lỗi ồn ào hơn. Hãy giới hạn số lần khởi động dịch vụ và cảnh báo khi thất bại lặp lại. Một tiến trình đang chạy cũng có thể bị kẹt: đo tuổi của tác vụ cũ nhất và thao tác hoàn thành gần nhất. Kiểm tra một sự cố API, một đĩa trống và một lần dừng tiến trình với các tác vụ dùng một lần, sau đó xác minh rằng trạng thái bền vững ngăn các hành động bên ngoài bị trùng lặp.

  • Đặt ngân sách nhà cung cấp và thời gian chờ yêu cầu trong ứng dụng cũng như ranh giới CPU/bộ nhớ trên runtime.
  • Container Docker không có giới hạn bộ nhớ hữu ích riêng cho khối lượng công việc chỉ vì chúng là container; hãy cấu hình và kiểm tra giới hạn một cách có chủ đích.
  • Lưu trữ một bí mật bên ngoài image và cây công khai, sau đó kiểm tra rằng nhật ký sự cố và chẩn đoán có che giấu nó.
  • Duy trì một lộ trình dừng thủ công và yêu cầu đánh giá phù hợp đối với chi tiêu, ghi vào môi trường sản xuất hoặc gửi tin nhắn ra bên ngoài.
CẤU HÌNH HẠ TẦNG CỦA BẠN

Nắm quyền kiểm soát.
Triển khai theo cách của bạn.

Không giấy tờ danh tính. Toàn quyền quản trị viên. Thanh toán thuần tiền mã hóa.