2012-03-01 86 views
0

我已經通過the docs進行了讀取,看起來很清楚。mod_wsgi(守護進程模式)沒有重新加載源代碼

我有2個多線程的mod_wsgi進程。通常我只需觸摸wsgi腳本並重新加載源代碼。但是定期更新不會重新加載,問題會持續幾個小時。我不明白是什麼導致它停止重新加載更改,也不知道是什麼導致它在過去遇到問題時再次開始重新加載。

我試過殺死mod_wsgi進程,但沒有任何區別。我自己無法重新啓動Apache。

  1. 我還能做些什麼來嘗試強制重新加載?
  2. 我該如何防止這種情況繼續發生?

這裏是WSGI配置:

WSGIScriptAlias /ms20 /var/www-dev/wsgi-scripts/ms20.wsgi 
    WSGIDaemonProcess ms20 user=glpp group=glab processes=2 display-name=%{GROUP} 
    WSGIProcessGroup ms20 

    <Directory "/var/www-dev/wsgi-scripts"> 
     Order allow,deny 
     Allow from all 
    </Directory> 

回答

1

你沒有運行文檔中的測試,以驗證請求在守護進程處理?

對WSGIDaemonProcess使用display-name選項,以便您可以使用'ps'驗證只有mod_wsgi守護進程正在使用大量內存而不是所有Apache'httpd'進程。您的VirtualHost配置可能是錯誤的,並且您的WSGI應用程序正在以嵌入模式運行。

http://code.google.com/p/modwsgi/wiki/ConfigurationDirectives#WSGIDaemonProcess

+0

是的,我使用的顯示名稱選項,它似乎非常清楚,請求在守護進程模式幾個月,現在處理。 (服務器上有兩臺運行PHP站點的虛擬主機,因此Apache進程正在使用它們)。錯誤(引用過期代碼)看起來像[[Thu Mar 01 16:06:12 2012] [error] [client ###。###。###。#] mod_wsgi(pid = 6649):處理WSGI腳本'/ var/www-dev/wsgi-scripts/ms20.wsgi'.'時發生異常,並且pid是兩個守護程序wsgi進程之一。我會在一秒鐘內將配置添加到我的問題中。 – jmilloy 2012-03-01 22:39:10

+0

線程也如預期。我應該說服,還是我還有什麼要驗證? – jmilloy 2012-03-01 22:48:30

+0

如果只有一個WSGI應用程序,則可以嘗試強制使用特定的子解釋器,以確保不會跨多個請求分割請求,儘管使用該配置它應該是可能的。因此,添加'WSGIApplicationGroup%{GLOBAL}'。 – 2012-03-02 01:10:32

相關問題