我们有一组遗留的python Web应用程序,这些应用程序已在Debian Lenny(生产)服务器上运行多年。我们最近克隆了该服务器并将该克隆升级为Wheezy。 Web应用程序在新服务器上大部分时间都可正常工作,但是对python libxml2.parseFile的调用偶尔也会异常,(阻止我们从Lenny框切换到Wheezy框)。
一些注释
重新启动apache后,parseFile失败不会立即开始。您必须开始使用Web应用程序,并在一段时间(几分钟或更长时间)之后开始发生parseFile故障。当它们开始发生时,重新启动apache似乎会暂时清除干扰parseFile能够访问/读取文件的任何内容。
失败似乎是在不同的Web应用程序和不同的页面上随机发生的(因此,不同的xsl文件)。它们不与一组特定的xsl文件隔离。
在我们的某个网络应用中点击时,当您访问某个页面并且parseFile失败时,如果您刷新该页面,则parseFile会正常工作并且页面呈现正确。
我们尝试使用lxml(2.3.2-1)而不是libxml2的标准python绑定,并且在调用etree.parse
配置
Web应用程序正在使用mod_python(不幸的是,现在它们不是真正的选项,可以将它们转换为使用mod_wsgi)。
旧服务器
- Debian Lenny
- Apache compiled with prefork
- mod_python 3.3.1
- python 2.5
- libxml2 (2.6.32.dfsg-5+lenny5)
- libxslt1.1 (1.1.24-2)
- python-libxml2 (2.6.32.dfsg-5+lenny5)
- python-libxslt1 (1.1.24-2)
新服务器
- Debian Wheezy
- Apache compiled with prefork
- mod_python 3.3.1
- python 2.7
- libxml2 (2.8.0+dfsg1-7+nmu3)
- libxslt1 (1.1.26-14.1)
- python-libxml2 (2.8.0+dfsg1-7+nmu3)
- python-libxslt1 (1.1.26-14.1)
有关可能发生的事情的任何想法?在我看来,多线程问题不适用,因为apache是用MPM prefork编译的 - 这是正确的还是我错了?
提前感谢您的帮助!