【问题标题】:Check number of TCP connections to the server检查与服务器的 TCP 连接数
【发布时间】: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


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2016-06-18
      • 1970-01-01
      • 2017-01-27
      • 1970-01-01
      • 1970-01-01
      • 2015-09-29
      • 2012-05-04
      • 1970-01-01
      • 2014-09-12
      相关资源
      最近更新 更多