4

IISをWebサーバーとして(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

その問題を解決する方法のヒントを教えてもらえますか?

更新: アプリケーション プールの詳細設定の「Rapid-Fail Protection」が 5 回の障害に設定されました。それを無効にすると、すべてうまくいきました。

では、ここで問題となるのは、障害の原因を特定するにはどうすればよいかということです。

更新: 複数の要求 (img、css、js) があると IIS がクラッシュすることがわかりました。それらのそれぞれに対して PyISAPIe が呼び出され、認識されると静的サーバーに渡されます。なぜこれが起こるのか分かりません...

4

4 に答える 4

2

PyISAPIeは、Windows 2008 で Django を実行するための適切な選択ではありません。この記事では、より良い解決策を見つけることができます。

于 2012-05-10T11:24:15.600 に答える
1

複数のリクエスト (img、css、js) があると IIS がクラッシュすることがわかりました。それらのそれぞれに対して PyISAPIe が呼び出され、認識されると静的サーバーに渡されます。なぜこれが起こるのか分かりません...

複数の要求により、両方のマシンでエラーが発生しますか? ISAPI アプリケーションに複数の要求がある場合、各要求は独自のスレッドで実行されます。Python のマルチスレッド モデルはグローバルです。その Python プロセスで実行されているすべてのスレッドが混在し、すべてのグローバル リソースを共有しているため、Python エンジンを使用して、すべてのアプリケーションとプロセスで実行されているすべてのマルチスレッド コードをシリアル化する必要があります。これは、Python のマルチスレッド処理における重大な欠点であり、問​​題の原因となる可能性があります。http://docs.python.org/library/multiprocessing.htmlおよびその他のソースを参照してください。

しかし、これは 1 つのマシンでのみ発生し、他のマシンでは発生しないため、それが原因である可能性があります。他の多くの環境変数 (リクエスト数、マシンのリソース、プロセッサなど) にも依存する可能性があります。

于 2012-05-11T17:59:45.830 に答える
1

そこにあるはずのイベントログを確認してください。

httperror ログ (C:\Windows\System32\LogFiles\HTTPERR) で詳細を確認することもできます。

于 2011-04-28T14:08:36.663 に答える
0

マシンのメモリ使用量を確認します (合計物理)。

于 2011-04-14T14:44:15.353 に答える