其实我自己也想出了答案。
在我的负载测试中,最初我们得到了“NoHttpResponseException,目标服务器@Somelink:PortNumber无法响应。”在loadtest期间,因为httpClient维护持久连接,意味着同一个连接发送多个请求。这样更有效率。有一个evictor线程,我们已经设置了一定的毫秒或秒。 evictor线程将在一定的毫秒后删除空闲连接。在生产过程中,可能会出现空闲连接,因为我们一直没有交通。现在,在Load测试期间,由于我们始终将请求始终发送到客户端服务器,因此连接不会空闲。因此,连接不会被驱逐,并且TTL属性被设置为默认值“-1”,这意味着无限(这对我的应用程序来说,对于每个应用程序而言都取决于开发人员设置的值)。
TTL是一个属性,它定义连接必须处于活动状态的时间长度,而不管它是否处于空闲状态。如果该属性设置为“-1”,则连接将永远保持活动状态,或者至少在客户端服务器关闭它之前保持活动状态。客户端服务器通常在一段时间后关闭连接。没有服务器永远保持连接。新的连接将始终建立。
在此期间,当客户端关闭我们的连接时,我们的服务器将假定连接已建立,但客户端未发送响应。因此它返回NoHttpResponseException,即目标服务器无法响应。添加TTL属性将确保删除任何持久连接,无论它是否处于空闲状态。因此,我们将始终有一个防止NoHttpResponseException的新连接。
我希望这会有所帮助。