我在 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。我稍后会尝试这个。