【发布时间】:2017-12-16 13:25:04
【问题描述】:
我们有两个应用服务器,即。 s1 和 s2。
对于到达 s1 的每个请求,它都会调用 s2 公开的服务。
s1 正在运行端口 8585 和 s2 在端口 8989 上运行
- 我们已经在 s1 上实现了 Http 连接池,因此在与 s2 通信时连接将被重用。为此,我们使用 apache httpclient 库和 PoolingHttpClientConnectionManager 进行连接轮询。
- HttpClient 实例仅在启动时创建一次,并在调用 s2 公开的服务时共享。
- 在创建 HttpClient 时,我们已将 HttpClient 最大连接数配置为 50
如何检查连接轮询是否正常工作?
我们在 s2 中添加了 10 秒的延迟,因此每个请求都等待 10 秒才能得到响应。
我们正在尝试使用 Jmeter 向服务器 s1 生成 200 个并发请求,并按照 netstat 命令检查服务器 s1 到 s2 建立的连接数
while [ 1 ] ; do netstat -apnt | grep -E '8585.*ESTABLISHED' ;echo "---";sleep 3; done
它给出随机行为。 有时连接计数显示 100,有时显示 65 或任何其他数字。
【问题讨论】:
标签: java linux tcp connection-pooling microservices