IIS 7.5 在几个请求后崩溃(使用 Django + PyISAPe)
我设法使用 IIS 作为网络服务器(使用 PyISAPIe)运行 Django,并且在我的测试服务器中一切顺利,安装Windows 2008 Server R2 64位。
然后我在另一台具有相同配置的服务器上安装了该应用程序,并且它对于第一个请求运行良好。然后,当我重新加载页面时,我会看到“服务无法正常工作”页面。
在事件日志中,我看到一个应用程序错误,指出 python26.dll 有一些问题:
Faulting application name: w3wp.exe
Faulting module name: python26.dll
Exception code: 0x40000015
Faulting application path: C:\Windows\SysWOW64\inetsrv\w3wp.exe
Faulting module path: C:\Windows\system32\python26.dll
您能给我一些有关如何解决该问题的提示吗?
更新:应用程序池高级设置中的“快速失败保护”设置为 5 次失败;禁用它,一切正常。
那么,现在的问题是:如何检测导致故障的原因?
更新:我发现当有多个请求(img、css、js)时,IIS 会崩溃。 PyISAPe 为它们中的每一个调用,一旦识别,将它们传递到静态服务器。 不知道为什么会发生这种情况...
I managed to run Django using IIS as webserver (using PyISAPIe) and everything goes well in my test server, mounting Windows 2008 Server R2 64bit.
Then I installed the application on another server with the same configuration and it works fine for the first request. Then when I reload the page, I get a "Service not working" page.
On the event log I see an Application error saying that python26.dll had some problems:
Faulting application name: w3wp.exe
Faulting module name: python26.dll
Exception code: 0x40000015
Faulting application path: C:\Windows\SysWOW64\inetsrv\w3wp.exe
Faulting module path: C:\Windows\system32\python26.dll
Can you give me some hint on how to solve that problem?
UPDATE: "Rapid-Fail Protection" in the Advanced Settings of the Application Pool was set to 5 failures; disabling it, all worked well.
So, now the question is: how can I detect what caused the failures?
UPDATE: I discovered that IIS crashes when there are multiple requests (img, css, js). PyISAPIe is called for each of them, passing them to static server once recognized.
No idea why this happens...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
PyISAPIe 不是在 Windows 2008 上运行 Django 的好选择。在本文中您可以找到更好的解决方案:在 Windows 上运行 Django(带有性能测试)
PyISAPIe is not a good choice to run Django on Windows 2008. In this article you can find better solution: Running Django on Windows (with performance tests)
检查事件日志,它应该在那里。
您还可以在 httperror 日志 (C:\Windows\System32\LogFiles\HTTPERR) 中找到更多详细信息。
Check the eventlog it should be in there.
You may also find some more detail in the httperror log (C:\Windows\System32\LogFiles\HTTPERR).
多个请求会导致两台机器上的错误吗?当 ISAPI 应用程序中有多个请求时,每个请求都在自己的线程中运行。 Python 多线程模型是全局的 - 在该 Python 进程下运行的所有线程都混合在一起并共享所有全局资源,因此您必须使用 Python 引擎序列化在所有应用程序和进程中运行的所有多线程代码。这是 Python 多线程处理的一个严重缺点,并且可能是问题的根源。请参阅 http://docs.python.org/library/multiprocessing.html 和其他来源。
但即使这种情况只发生在一台机器上,而不是另一台机器上,这可能仍然是原因 - 它还可能取决于许多其他环境变量 - 请求数量、机器资源、处理器等。
Do multiple request cause the error on both machines? When there are multiple requests in an ISAPI application, each request runs in its own thread. The Python multi-threading model is GLOBAL - all threads running under that Python process are co-mingled and sharing all global resources, so you must serialize all multi-threaded code running in all applications and processes using your Python engine. This is a serious downside in Python multi-threaded processing and may be the source of your problems. See http://docs.python.org/library/multiprocessing.html and other sources.
But even this only occurs on one machine and not the other, that may still be the cause - it could also depend on many other environmental variables - number of requests, resources of the machine, processors, etc.
检查机器上的内存使用情况(总物理内存)。
Check memory usage on machine (total physical).