Bar*_*iba 4 java apache tcp http
我有一个 http 请求,需要服务器处理太多时间(大约 5 分钟)。由于连接空闲 5 分钟,代理服务器关闭连接。我正在尝试在 Apache DefaultHttpClient 中使用 TCP Keep-Alive 使连接长时间处于活动状态(不要将 TCP Keep-Alive 与 HTTP Keep-Alive 混淆,后者在发送响应后根本不会关闭连接)。
Apache http 核心具有以下参数 SO_KEEPALIVE:http://hc.apache.org/httpcomponents-core-ga/httpcore/apidocs/org/apache/http/params/CoreConnectionPNames.html#SO_KEEPALIVE。但是,由于 DefaultHttpClient javadocs,我无法使用该参数自定义客户端的行为:https : //hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/org/apache/http/impl/client/DefaultHttpClient.html .
但是,我这样做了,似乎不起作用:
HttpClient client = getHttpClient();
client.getParams().setParameter(CoreConnectionPNames.SO_KEEPALIVE, true);
Run Code Online (Sandbox Code Playgroud)
你知道如何让 DefaultHttpClient 使用 TCP Keep-Alive 策略吗?
为了使它工作,我需要设置 keepalive 超时。但是它们只能在操作系统级别设置,而不能在 Java 代码中设置。据我所知,不可能在 Java 代码中设置 keepalive 超时。
这是我在 Linux 上设置它们的方法:
sudo sysctl -w net.ipv4.tcp_keepalive_time=60
sudo sysctl -w net.ipv4.tcp_keepalive_intvl=60
sudo sysctl -w net.ipv4.tcp_keepalive_probes=10
Run Code Online (Sandbox Code Playgroud)
值是秒数。
归档时间: |
|
查看次数: |
5393 次 |
最近记录: |