Ошибка MemoryError на сервере, но не на локальной машине - PullRequest
0 голосов
/ 15 ноября 2018

У меня есть приложение .Net Console, которое порождает Process для выполнения скрипта Python.Вход является относительно большим входом, около 1 ГБ, который проходит некоторые этапы обработки изображения.Скрипт python обернут в блок try/except, который просто возвращает сообщение о результате (хак, но такова жизнь).Проблема, которую я обнаружил, заключается в том, что файл не будет обрабатываться на 2 отдельных серверах, но он будет обрабатываться без ошибок на моем локальном компьютере.

Характеристики сервера: Windows Server 2012 R2 Standard, четырехъядерный процессор Intel Xeon, 32 ГБRAM - AWS EC2 Local Machine: Windows 10 Pro, четырехъядерный процессор i7, 16GB RAM - dev машина / ноутбук

Python работает в виртуальной среде с одинаковыми пакетами требований в обоих случаях, кодто же самое, но что-то убивает процесс при запуске на экземпляре сервера AWS EC2.

Я вижу всплеск ОЗУ в диспетчере задач на моей локальной машине, но когда я запускаю его на серверах, процесс pythonдостаточно недолговечен, поэтому я не могу ни найти его, ни увидеть его всплеск ОЗУ в диспетчере задач.

Я получаю сообщение об ошибке MemoryError, поэтому я знаю, что python хотя бы запускает скрипт и вызывает ошибку.Локально, при запуске python достигает примерно 10-11 ГБ ОЗУ, поэтому я не ожидаю, что ОЗУ действительно будет ограничивающим фактором.

Существует ли какая-либо системная политика или другое защитное устройство в программном обеспечении Windows Server, которое предотвращает выделение pythonнеобходимая оперативная память?Через AppPool ничего не запускается, это простая консольная .exe-программа.Что может стать причиной такой смерти Python?

Редактировать: Я проходил построчно через скрипт Python, который у меня есть.Кажется, ошибка возникает из-за: someVar = np.zeroes([largeNumber, largeNumber2]).astype('uint8') ... Из того, что я собрал из документации numpy, метод astype создает копию в памяти.

Это все еще не помогает мне понятьпочему он работает локально, а не на сервере.

...