Tôi đang chạy pdftoppm
để chuyển đổi PDF do người dùng cung cấp thành hình ảnh 300DPI. Điều này hoạt động rất tốt, trừ khi người dùng cung cấp một tệp PDF với kích thước trang rất lớn. pdftoppm
sẽ phân bổ đủ bộ nhớ để chứa hình ảnh 300DPI có kích thước đó trong bộ nhớ, mà đối với trang vuông 100 inch là 100 * 300 * 100 * 300 * 4 byte mỗi pixel = 3,5GB. Một người dùng độc hại có thể chỉ cho tôi một bản PDF lớn ngớ ngẩn và gây ra tất cả các loại vấn đề.
Vì vậy, những gì tôi muốn làm là đặt một số giới hạn cứng cho việc sử dụng bộ nhớ cho một tiến trình con tôi sắp chạy - chỉ cần xử lý chết nếu nó cố phân bổ nhiều hơn 500 MB bộ nhớ. Điều đó có thể không?
Tôi không nghĩ rằng ulimit có thể được sử dụng cho việc này, nhưng liệu có tương đương một quá trình không?
docker
nào?