Cloudflare HTTP POST 524超时与node.js + express

6

我在启用Cloudflare后使用HTTP POST时遇到了麻烦。会一直返回524超时。

Failed to load resource: the server responded with a status of 524 (Origin Time-out) 

当我禁用Cloudflare时,HTTP POST 就可以正常工作了。你有什么想法是什么原因导致的?
更新:我正在使用AJAX POST,这与ajax有关吗?谢谢。

1
你解决过这个问题吗?我遇到了一个非常类似的问题。 - Pat Marx
在这种情况下应该怎么做,你找到了任何解决方案吗? - Suraj Jain
2个回答

1

是的,但我没有进行任何长时间的处理,只是一个简单的订阅框。正如我之前提到的,如果我禁用Cloudflare,则使用AJAX的POST方法可以正常工作。 - hrusli
这个进程需要多长时间?如果超过30/60秒,你必须使用子域名绕过Cloudflare网络。目前,Cloudflare不支持超过30/60秒的进程。 - Joshua Pack

0
控制台实用程序“netstat”显示,来自CloudFlare的一些连接处于CLOSE_WAIT状态。这意味着服务器没有正确关闭连接。通过使用消息分析器查看我的Web服务器的TCP流量,我发现有几个连接已经建立并发送了HTTP请求,但是我的服务器从未处理过这些请求。
因此,我们得到了一个答案:同时建立的连接数超过了可用的Accept()调用数量。因此,TCP堆栈连接并等待应用程序处理其连接。根据情况,这可能永远不会发生,因此客户端在30秒超时后放弃此连接而没有获得任何响应。
要解决此问题,您必须增加可接受的最大同时连接数。此参数可以命名为“最大同时连接数”或类似名称。请查阅您的Web服务器文档或咨询支持以获取更多信息。
此外,作为一项实验,您可以强制您的服务器回复“Connection:close”头部到每个请求。这可能会防止达到活动连接限制问题,因为CloudFlare保持它们的连接时间太长。
此外,您进行的同时请求越多,遇到问题的概率就越大。您可以尝试为空闲连接设置一些小的Web服务器端超时

附注:以下是一位客户加载页面后CloudFlare连接数的示例图:

(http://i.imgur.com/IgwGLCf.png)

未处理的接受/连接请求数量是“backlog”。它与同时连接的数量无关,两者都与CLOSE_WAIT无关,后者只是套接字泄漏。 - user207421

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接