我有一个.Net Console应用程序,该应用程序生成一个进程来执行python脚本。该输入是一个较大的输入,大约1GB,需要经过一些图像处理步骤。 python脚本包装在try/except
块中,该块仅返回有关结果的消息(hacky,但这就是生命)。我发现的问题是该文件将不会在2个单独的服务器上处理,但是它将在我的本地计算机上处理而没有错误。
服务器规格:Windows Server 2012 R2 Standard,四核Intel Xeon,32GB RAM-AWS EC2 本地计算机:Windows 10 Pro,四核i7、16GB RAM-开发计算机/笔记本电脑
Python在两个实例中具有相同需求包的虚拟环境中运行,代码相同,但是在AWS EC2服务器实例上运行时,某些东西正在杀死该进程。
我可以在本地计算机上的任务管理器中看到RAM峰值,但是当我在服务器上运行它时,python进程寿命很短,以至于我找不到它,也看不到任务管理器中的RAM峰值。 / p>
我又收到错误消息MemoryError
,所以我知道python至少正在启动脚本并遇到错误。在本地,启动时python的峰值内存约为10-11GB,因此我不希望RAM真正成为限制因素。
Windows Server软件中是否有某些系统策略或其他保护设备可以阻止python分配必要的RAM?没有通过AppPool运行的东西,它是一个简单的Console .exe程序。是什么导致python那样死掉?
编辑:
我一直在逐行浏览我拥有的python脚本。该错误似乎源于:someVar = np.zeroes([largeNumber, largeNumber2]).astype('uint8')
...根据我收集的numpy
文档,astype
方法在内存中创建了一个副本。
它仍然不能帮助我弄清楚为什么它在本地而不是在服务器上运行。