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