java - 检查与服务器的 TCP 连接数

标签 java linux tcp connection-pooling microservices

我们有两个应用服务器即。 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 或任何其他数字。

最佳答案

用 awk“确定”你的 netstat 输出:

netstat -antp | awk '$6 == "ESTABLISHED" { split ($5,prt,":");if ( prt[2] == "8585" ) { cnt++ } } END { print cnt }'

这将获取 netstat 输出,然后检查第 6 个分隔数据(使用默认空格)并根据 ESTABLISHED 检查它。如果满足条件,则使用 : 将第四个定界数据拆分为数组端口。此的第二个元素将具有连接端口,因此将根据 8585 进行检查。如果满足此条件,则连接计数将增加。在 awk 脚本的末尾,打印了最终的 cnt 变量。

关于java - 检查与服务器的 TCP 连接数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45052215/

相关文章:

C++ 套接字发送/接收与写入/读取

c# - 读取所有字节后 TcpListener 挂起

networking - TCP 3 次握手 - 多个 SYN

java - 为什么这个小程序不工作/显示图像?

java - 使用多个字符串分隔符分割字符串

node.js - PM2(node) 从命令行向集群发送消息

tcp - udp打洞后发送文件

java - Apache Camel onException

java - 如何使用 Hashmap 在 firebase firestore android 中添加/更新/删除数组元素?商店数据库

linux - 大括号后的额外字符