Một trong những tính năng, lợi ích hay nhất của Linux chính là bạn có thể kiểm soát hầu hết mọi thứ trong đó. Điều này giúp cho các nhà quản trị hệ thống có thể kiểm soát và sử dụng tài nguyên hệ thống tốt hơn.
Nhiều người mặc dù đã sử dụng Linux trong nhiều năm trời nhưng có thể vẫn chưa quan tâm nhiều lắm về cách điều chỉnh tối ưu hóa hệ thống. Nhưng quan trọng hơn là bạn cần biết trong Linux bạn hoàn toàn có thể giới hạn tài nguyên mà một user có thể sử dụng và trong bao lâu.
Trong bài viết này, mình sẽ chỉ cho bạn cách giới hạn số lượng process được start bởi user, cách kiểm tra giới hạn hiện tại và chỉnh sửa chúng.
Trước khi đi sâu vào cách điều chỉnh giới hạn số lượng process, chúng ta cần lưu ý 2 điểm này:
- Bạn cần quyền truy cập root tới hệ thống để điều chỉnh giới hạn user
- Bạn cần phải cực kỳ cẩn thận nếu như muốn điều chỉnh những giới hạn này
Để thiết lập giới hạn cho user, chúng ta cần phải chỉnh sửa những file sau:
/etc/security/limits.conf
File này được dùng để apply ulimit (user limit) được tạo ra bởi pam_module
Khi sử dụng ulimit bạn có thể thiết lập 2 loại giới hạn như sau:
- Hard limit: loại giới hạn này chỉ cho mục đích security. Hard limit có thể được sử dụng khi sử dụng quyền root
- Soft limit: loại giới hạn này có thể được thay đổi bởi process tại bất kỳ thời điểm nào. Giá trị này được thiết lập nằm giữa 0 và hard limit.
File này có cú pháp như sau:
<domain> <type> <item> <shell limit value>
Trong đó:
- domain: có thể là username, group với cú pháp @group,…
- type: có thể là soft hoặc hard
- item: mục sẽ bị giới hạn – core size, file size, nproc
- shel limit value: có thể là một trong những giá trị sau đây:
- — nofile – số file descriptor mở tối đa
- — nproc – số process tối đa khả dụng cho user
Ví dụ:
@student hard nproc 20
* hard nofile 65535
* soft nofile 4096
Giới hạn ở trên thiết lập hard limit với tối đa 20 processes ở group “student“
Nếu bạn muốn thấy giới hạn nhất định của một process, đơn giản chỉ cần sử dụng lệnh “cat” để kiểm tra file như sau:
# cat /proc/{PID}/limits
Trong đó PID là ID của process, bạn có thể kiểm tra id process bằng cách sử dụng lệnh ps.
Ví dụ:
# cat /proc/2537/limits
Output sẽ có dạng như sau:
Limit Soft Limit Hard Limit Units
Max cpu time unlimited unlimited seconds
Max file size unlimited unlimited bytes
Max data size 8589934592 8589934592 bytes
Max stack size 8388608 unlimited bytes
Max core file size 0 unlimited bytes
Max resident set unlimited unlimited bytes
Max processes 62503 62503 processes
Max open files 1024 1048576 files
Max locked memory 67108864 67108864 bytes
Max address space unlimited unlimited bytes
Max file locks unlimited unlimited locks
Max pending signals 62503 62503 signals
Max msgqueue size 819200 819200 bytes
Max nice priority 0 0
Max realtime priority 0 0
Max realtime timeout unlimited unlimited us
Bạn để ý ở trên sẽ thấy có dòng Max processes cho bạn thấy giới hạn hiện tại của process.