我们目前在 Azure VM 实例上托管了一个应用程序。
此应用程序有时会处理长时间运行和空闲的 HTTP 请求。这会导致问题,因为Azure 将关闭所有空闲时间超过几分钟的连接。
我已经看到了一些关于设置较低 TCP keepalive 速率的建议。我尝试将此速率设置为 45 秒左右,但我的 HTTP 请求仍在关闭。
有什么建议么?我们的虚拟机正在运行 Server 2008 R2。
我们目前在 Azure VM 实例上托管了一个应用程序。
此应用程序有时会处理长时间运行和空闲的 HTTP 请求。这会导致问题,因为Azure 将关闭所有空闲时间超过几分钟的连接。
我已经看到了一些关于设置较低 TCP keepalive 速率的建议。我尝试将此速率设置为 45 秒左右,但我的 HTTP 请求仍在关闭。
有什么建议么?我们的虚拟机正在运行 Server 2008 R2。
作为一个简单的解决方法,我让我的脚本每 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;
Azure 负载均衡器现在支持云服务和虚拟机的可配置 TCP 空闲超时。可以使用服务管理 API、PowerShell 或服务模型来配置此功能。