0

我们目前在 Azure VM 实例上托管了一个应用程序。

此应用程序有时会处理长时间运行和空闲的 HTTP 请求。这会导致问题,因为Azure 将关闭所有空闲时间超过几分钟的连接

我已经看到了一些关于设置较低 TCP keepalive 速率的建议。我尝试将此速率设置为 45 秒左右,但我的 HTTP 请求仍在关闭。

有什么建议么?我们的虚拟机正在运行 Server 2008 R2。

4

2 回答 2

2

作为一个简单的解决方法,我让我的脚本每 5 秒左右发送一个换行符以保持连接有效。

例子:

set_time_limit(60 * 30);
ini_set("zlib.output_compression", 0);
ini_set("implicit_flush", 1);

function flushBuffers()
{
    @ob_end_flush();
    @ob_flush();
    @flush();
    @ob_start();
}

function azureWorkaround($char = "\n")
{
    echo $char;
    flushBuffers();
}

$html = '';
$employees = getEmployees();
foreach($employee in $employees) {
    html .= getReportHtmlForEmployee($employee);
    azureWorkaround();
}

echo $html;
于 2014-01-20T21:27:50.183 回答
1

Azure 负载均衡器现在支持云服务和虚拟机的可配置 TCP 空闲超时。可以使用服务管理 API、PowerShell 或服务模型来配置此功能。

有关更多信息,请查看http://azure.microsoft.com/blog/2014/08/14/new-configurable-idle-timeout-for-azure-load-balancer/上的公告

于 2015-01-19T18:53:43.060 回答