一段时间后使用nginx + FastCGI的Django + Satchmo给出HTTP错误502错误的网关

时间:2011-12-02 17:18:08

标签: django nginx fastcgi production-environment satchmo

我在Linux Debian 6分发版上安装了新的Satchmo商店。标准的Django开发服务器工作得很完美,但是在生产模式下使用nginx + FastCGI一段时间后(或者看起来像是一些内存限制后会过满)nginx输出“502 Bad gateway”错误。

在日志文件中,我找到了这些行:

  

2011/12/02 02: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无法从我的django fastcgi服务器得到正确的响应。我尝试了django服务器(maxchildren,maxrequests)的不同设置,但错误仍在这里(结论是更高的值 - 更长的生命没有错误)。设置maxchildren = 3 maxrequests = 10错误在5-10页刷新后随机出现,15次刷新后总会出现。

我也发现当我评论一些satchmo源代码错误消失时。这很奇怪,因为它对于正确的工作商店来说非常重要。我认为它可以解决问题的原因。差异在于:http://dpaste.com/hold/664978/

如果我愿意,问题就会消失:

  • 在我唯一的付款模块中注释掉PAYMENT_PROCESSOR=True行。
  • config_register(MultipleStringValue(SHIPPING_GROUP, ...)
  • 中注明shipping/config.py

我认为这些行导致了生产服务器崩溃的真正原因。我怎么能彻底解决这个问题?对我的调查有什么建议吗?

更新

启用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的食谱来解决这个问题。我稍后会尝试这个。

2 个答案:

答案 0 :(得分:0)

您应该查看Satchmo日志文件,看看是否有更多有关此崩溃原因的详细信息。您注释掉的项目不应该防止崩溃,因此我怀疑您的部署设置还有其他问题。

要考虑的另一个问题是,您使用的是线程与非线程的Fast-cgi吗?

答案 1 :(得分:0)

这是由数据库连接问题引起的。

基本原理:错误消息“配置错误问题查找设置SHOP.SHOW_SITE”的第一部分来自livesettings。它通常是第一个使用数据库的模块。逗号“服务器意外关闭连接后...”之后的第二部分是来自Postgres数据库客户端的有关连接到数据库服务器的消息。

可以通过以下命令测试数据库连接,活动连接数和数据库设置:

$ 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