java - Apache HttpClient TCP Keep-Alive(套接字保活)

标签 java apache http tcp

我的 http 请求服务器处理时间过长(大约 5 分钟)。因为连接闲置了 5 分钟,所以代理服务器关闭了连接。 我正在尝试在 Apache DefaultHttpClient 中使用 TCP Keep-Alive 使连接长时间处于 Activity 状态(不要将 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);

你知道如何让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

值是秒数。

关于java - Apache HttpClient TCP Keep-Alive(套接字保活),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37165269/

相关文章:

java - 是否可以从您的 C++ 和 Java 代码调用 OpenGL ES?

java - 在 Java 中解析具有多个定界符的字符串

java - 隐藏算法有必要吗?

apache - @font-face 字体只适用于它们自己的域

java - Android 通过 HttpPost 和 URLconnection 使用 cookie

Java 初学者 : nullpointerexception error

php - 于是 eclipse 和 xdebug 走进了一个酒吧,然后我的 apache 服务器就死了

java - 设置操作系统环境变量后,Apache Maven install "' mvn' not Recognized as an internal or external command"?

python cookielib 错误 :403 Forbidden

REST 子/子资源单个实体