Я працюю, pdftoppm
щоб перетворити наданий користувачем PDF в зображення 300DPI. Це чудово працює, за винятком випадків, коли користувач надає PDF з дуже великим розміром сторінки. pdftoppm
виділить достатньо пам’яті, щоб вмістити в пам’яті зображення 300DPI такого розміру, яке на 100-дюймовій квадратній сторінці становить 100 * 300 * 100 * 300 * 4 байти на піксель = 3,5 Гб. Зловмисний користувач міг просто надати мені дурно-великий PDF-файл і викликати всілякі проблеми.
Тож, що я хотів би зробити, це поставити якийсь жорсткий ліміт на використання пам’яті для дочірнього процесу, який я збираюся запустити - просто майте процес загинути, якщо він намагатиметься виділити більше, ніж, скажімо, 500 Мб пам'яті. Це можливо?
Я не думаю, що для цього можна використовувати ulimit, але чи існує однопроцесовий еквівалент?
docker
?