我有一个在应用服务器上运行的大型项目。它对大批量数据进行流水线处理,并在一个Linux系统(旧的生产环境)和一个Windows系统(我的开发环境)上正常工作。
但是,基于与现有生产系统(我们使用AWS)相同的图像,我们正在升级我们的基础设施并转移到新的Linux系统进行生产。 python版本(2.7)和库应该是相同的,因为我们自己使用文件哈希验证这个。
我们的问题是,当我们尝试在新服务器上开始处理时,我们收到一个非常奇怪的输出写入标准输出,然后挂起服务器,“删除描述符:[某个数字]”。我无法在开发机器上复制它。
以前有没有人在python中遇到过这样的行为?除了python标准库中的模块,我们还使用了eventlet和beautifulsoup。在标准库中,我们非常依赖urllib2,re,cElementTree和多处理(主要是池)。
答案 0 :(得分:0)
wberry在评论中是正确的,我遇到了每个进程问题的最大描述符。这似乎高度依赖于操作系统。减少批处理的大小我使每个处理器句柄低于进程的文件描述符限制解决了这个问题。