2012-12-26 289 views
3

我最近已經改變了一些Django/Python站點的服務器,並立即陷入困境。我的Apache實例或WSGI守護進程簡單地死了!沒有日誌,沒有警告或錯誤。我必須以root用戶身份重新啓動Apache,我認爲這是一個嚴重的權限漏洞。我的Linux知識是有限的,而且我是唯一一個遇到這個問題的人,因爲我無法涉及到目前爲止發現的其他答案。Apache/WSGI進程死亡

在Debian機器上,WSGI版本爲3.3(multiprocess = Truemultithread = True),Python 2.7和Django 1.4。我需要的一些python庫,包括Django,不是來自Debian的倉庫;我讓他們「手動」安裝。

有時候,我不知道這是否是重要的或者不是,我得到這個錯誤:

"ImportError: Failed to import _strptime because the import lockis held by another thread."

+0

我沒有一個完整的答案,但你可以看看使用supervisord自動重啓它,直到你找到正確的解決方案http://supervisord.org – shawnwall

回答

5

閱讀:

確保你沒有在同一時間加載mod_python。

確保您使用mod_wsgi守護程序模式而不是嵌入模式。

強制應用程序在主解釋器應用程序組中運行。

_strptime問題是一個Python bug(僅在3.3中修復)。顯式地在WSGI腳本文件的開始處import _strptime模塊。

+0

我讀過,但是有點太多我的大腦atm!..那麼,我沒有選擇,然後,更多的咖啡......我最終在這裏http://stackoverflow.com/questions/6608748/mod-wsgi-process-getting-killed-and-django -stop-working,因爲我發現這個「腳本在返回頭文件之前超時」,但不是同樣的問題......我將再次閱讀文檔,也許mod_wsgi是針對不同版本的python編譯的...... – StefanNch

+0

閱讀的關鍵之一是http://code.google.com/p/modwsgi/wiki/ApplicationIssues#Python_Simplified_GIL_State_API,並按照說明嘗試設置WSGIApplicationGroup。 –

+0

服務器管理員增加了線程和進程的數量......現在看起來很穩定! – StefanNch