Chuyển tới nội dung chính
Version: 4.1

Đặt giới hạn số tiến trình (PID) tối đa cho người dùng

Cgroup user-<uid>.slice của mỗi người dùng có một mức trần TasksMax - số tiến trình/luồng (PID) tối đa mà tài khoản người dùng được chạy cùng lúc. Đây không phải một mức gói mà khách hàng lựa chọn như CPU, RAM hay đĩa - nó là lưới an toàn chống fork bomb và các tiến trình mất kiểm soát.

Cách tính​

Mặc định, giới hạn PID được tự động tính từ RAM của gói người dùng, với tỷ lệ 500 tác vụ cho mỗi 1GB RAM, không bao giờ thấp hơn mức sàn 1000 tác vụ. Nhờ vậy giới hạn luôn tự điều chỉnh tương ứng mỗi khi giá trị RAM của gói thay đổi, và giữ các gói nhỏ nhất ở trên ngưỡng mà việc sử dụng thông thường - một pool PHP-FPM, một lần chạy cron và một shell cùng lúc - bị lỗi không fork được.

Ví dụ, gói có 4GB RAM nhận mức trần TasksMax là 2000, và mọi gói tới 2GB nhận mức sàn 1000. Gói có RAM 0GB (không giới hạn) cũng nhận TasksMax không giới hạn.

Ghi đè giới hạn cho một người dùng​

Nếu một người dùng cụ thể cần giới hạn PID tuỳ chỉnh - cao hơn hoặc thấp hơn mức tính từ RAM của gói - hãy tạo tệp TasksMax trong thư mục home của họ, chứa một số nguyên duy nhất:

echo "1000" > /home/<USERNAME>/TasksMax

Khi có mặt, tệp này luôn được ưu tiên hơn giá trị tự động tính cho người dùng đó.

Có thể đặt cùng giá trị ghi đè này tại HiTechAdmin > Người dùng > (người dùng) > Giới hạn tài nguyên > Số tiến trình, hoặc từ terminal:

hitechcloudcli user-limit <USERNAME> --tasks=1000

Cả hai cách đều ghi tệp TasksMax, nên giá trị được giữ qua lần đổi gói tiếp theo.

Áp dụng thay đổi​

Tạo hoặc sửa tệp TasksMax không tự có hiệu lực - gói phải được áp dụng (lại) cho người dùng để mức trần mới được ghi vào user-<uid>.slice của họ. Chạy:

hitechcloudcli plan-apply <PLAN_ID> <USERNAME>

Dùng ID gói hiện tại của người dùng sẽ áp dụng lại mọi giới hạn của gói, gồm cả mức trần PID mới.

Gỡ giá trị ghi đè​

Xoá tệp TasksMax và chạy lại hitechcloudcli plan-apply cho người dùng để quay về giá trị tự động tính từ RAM của gói:

rm /home/<USERNAME>/TasksMax
hitechcloudcli plan-apply <PLAN_ID> <USERNAME>

Kiểm tra giới hạn hiện tại​

hitechcloudcli limits show <USERNAME>
# or straight from systemd
systemctl show user-$(id -u <USERNAME>).slice -p TasksMax