我有一个用例,我需要在Fire和Forget模式下发出数千个HTTP Get请求。
我正在使用aync-http-client <https://github.com/AsyncHttpClient/async-http-client>来实现这一目标。
async-http-client:2.5.4
Java 11
我正在为DefaultAsyncHttpClientConfig.Builder
使用以下配置:
setMaxConnections(10000)
setIoThread(6)
setKeepAlive(true)
HTTP Get响应时间:p99 = 500ms
通过上述配置和http得到响应时间,我得到了20k rps(发送)。
我没有明确添加任何超时。
现在,我想了解添加100ms的readTimeOut是否会导致rps数量增加。假设在100毫秒的超时后,async-http-client将释放与池的连接供其他人使用。
是否还有其他建议的方法来使用async-http-client实现Fire and Forget?
谢谢。
答案 0 :(得分:0)
默认读取超时为60000毫秒。您正在考虑朝着正确的方向减少属性Read Timeout的值将释放连接。
有关更多详细信息,请参见以下位置的ReadTimeoutTimerTask类 https://github.com/AsyncHttpClient/async-http-client/blob/master/client/src/main/java/org/asynchttpclient/netty/timeout/ReadTimeoutTimerTask.java