MS Syncframework 4 - 服务器端处理 5 分钟后无响应

MS Syncframework 4 - no response after 5 minutes of server side processing

背景:

我们已经在旧生产服务器上使用 MS SyncFrameWork 4 在多个 MS SQL 数据库和 android 设备之间设置了同步。 初始同步总是花费最长的时间,但该时间不是问题,因为它只在第一次使用设备时发生。


服务器详细信息:


问题:

如果服务器上的数据库很大 - 初始同步在服务器端处理需要超过 5 分钟 - android 客户端似乎没有从服务器获得响应并运行超时。

根据服务器的负载,服务器端的初始同步过程需要 3 到 10 分钟。 如果初始同步成功,之后就没有问题了。

检查日志和跟踪时,我们没有发现任何错误。 IIS 工作进程似乎完成任务没有错误,即使它需要超过 5 分钟。 但是如果

    public Message ProcessRequestForMessage(Stream messageBody)

in class Microsoft.Synchronization.Services.SyncService 需要超过 5 分钟才能完成,android 客户端没有得到响应。即使它在指定的 900 秒套接字超时内。

在 Android 设备上发生 IOException:java.net.SocketTimeoutException:900 秒后读取超时 异常。

Android 端用于初始化 httpClient 的代码:

    HttpParams httpParameters = new BasicHttpParams();
    int timeout = 900 * 1000;
    HttpConnectionParams.setConnectionTimeout(httpParameters, 5000);
    HttpConnectionParams.setSoTimeout(httpParameters, timeout);
    DefaultHttpClient httpclient = new DefaultHttpClient(httpParameters);

以后使用:

    HttpResponse response = httpclient.execute(request);

我们尝试了什么:

所以我的问题是:

为清楚起见编辑:

我的问题的答案:

客户端和服务端的代码都可以。 罪魁祸首是 NAT 'TCP-Aging'-我们 LANCOM 路由器中的设置。 https://www.lancom-systems.com/docs/LCOS/menu-reference/topics/2_8_9_1.html

配置为 300 秒 => 5 分钟 ... 于是我们的路由器在闲置5分钟后悄悄断了连接...

我知道让一个空闲连接保持活动这么久不是最佳做法,但由于在我们的用例中这种情况很少发生,所以对我们来说没问题。

这个 post 的答案让我走上正轨: