У меня есть веб-сервер Django, работающий на экземпляре AWS EC2 с 1 ГБ ОЗУ. Когда на веб-сервер сделан определенный запрос, мне нужно запустить исполняемый файл, используя subprocess.call('./executable')
. Исполняемый файл запускает Perl-скрипт, который выполняет некоторые операции ввода-вывода, а затем выполняет некоторые вычисления для данных, проанализированных в файлах. Ничего страшного.
Я начал сталкиваться с проблемами выделения памяти, которые приводили к сбою моего веб-сервера, поэтому я запутался в установке жестких ограничений на виртуальную память, выделенную для каждого подпроцесса с помощью ulimit -v some_value
. Я обнаружил, что для каждого подпроцесса требуется около 100 МБ для запуска без ошибок, поэтому неудивительно, что у меня возникают проблемы с памятью только с 1 ГБ ОЗУ.
Мне интересно, однако, почему это использование памяти так высоко. Выделено ли много дополнительной памяти, потому что я звоню subprocess.call
из процесса, который работает на веб-сервере, который требует много памяти? Требуется ли запуск исполняемого файла, выполняющего сценарий Perl, с интенсивным использованием памяти, потому что Perl имеет некоторые накладные расходы или что-то в этом роде? Будет ли он использовать гораздо меньше памяти, если скрипт Perl будет переписан на Python и запущен непосредственно на веб-сервере Django?
Буду очень признателен за любую помощь в этом. Спасибо!