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