2011-12-02 32 views
0

我在Linux Debian 6分發版上安裝了新的Satchmo存儲。標準Django開發服務器的工作原理非常完美,但是在nginx + FastCGI的生產模式中,經過一段時間(或者在內存限制過滿後,看起來像是這樣)nginx輸出「502 Bad gateway」錯誤。Django + Satchmo在一段時間後使用nginx + FastCGI提供HTTP錯誤502錯誤的網關

在日誌文件中,我發現這些行:

2011/12/02 2點38分57秒[錯誤] 29894#0:* 91439的recv()失敗(104:由對等 重置連接)同時讀取來自上游的響應頭, 客戶端:2.95.158.164,服務器:my-secret-host.com,請求:「GET/ HTTP/1.1」,上游:「fastcgi:// unix:/ var/run/www /file.sock:」 主持人: 「my-secret-host.com」

我正在尋找在網上有很多,發現nginx的不能得到RI來自我的django fastcgi服務器的ght響應。我嘗試了Django服務器(maxchildren,maxrequests)的不同設置,但錯誤仍然存​​在(結論是更高的值 - 更長的壽命沒有錯誤)。隨着設置maxchildren = 3 maxrequests = 10錯誤隨機出現5-10頁刷新後,15刷新後,它總是出現。

我還發現,當我評論satchmo源代碼錯誤的一些行消失了。這很奇怪,因爲這對於正確的工作店來說非常重要。我認爲這可能是問題原因的線索。 DIFF是在這裏:http://dpaste.com/hold/664978/

問題消失,如果我想:

  • 註釋掉PAYMENT_PROCESSOR=True線,我唯一的支付模塊。
  • 註釋掉config_register(MultipleStringValue(SHIPPING_GROUP, ...)shipping/config.py

我覺得這些行導致崩潰我的生產服務器的真正原因。我怎樣才能完全解決這個問題?對我的調查有何建議?

UPDATE:

啓用的Satchmo測井後,我發現這個消息:

星期一,2011年12月5日13時26分37秒的配置誤差問題找到 設置SHOP.SHOW_SITE,服務器關閉意外連接 這可能意味着服務器在處理請求之前或處理期間異常終止 。

也許可以使用這裏的配方來解決這個問題https://groups.google.com/group/satchmo-users/browse_thread/thread/506b3ad77e7a766e?hl=es&pli=1。稍後我會試一試。

回答

0

你應該看看你的Satchmo日誌文件,看看是否有關於這次崩潰原因的更多細節。您註釋掉的項目不應該阻止崩潰,所以我懷疑部署設置還有其他問題。

另一個需要考慮的問題是,你使用線程還是非線程的Fast-cgi?

+0

與消息從登錄的Satchmo Django的 – ramusus

+0

與命令'runfcgi方法= prefork'運行。 satchmo有什麼不同? – ramusus

0

這是由數據庫連接的問題造成的。理由:錯誤消息「配置錯誤問題查找設置SHOP.SHOW_SITE」的第一部分來自生命設置。它通常是使用數據庫的第一個模塊。逗號後的第二部分「服務器意外地關閉了連接...」是來自Postgres數據庫客戶端的關於連接到數據庫服務器的消息。

數據庫連接,活動連接和db設置的數目可以由下面的命令進行測試:

更新
$ python manage.py dbshell 

postgres=> select * from product_product; -- something typical 
postgres=> select * from pg_stat_activity; -- active connections 
postgres=> show all;      -- show current db server settings