【发布时间】:2019-10-27 19:41:47
【问题描述】:
我有一个关于 netty 服务器监控的问题。我想看看有多少到服务器的打开连接,所以我们有一个代码,它有一个原子整数计数器,在 ChannelInitializer.initChannel(..) 方法上增加 1,在 closeFuture 侦听器中减少 1那个 SocketChannel 通道。由于某种我无法弄清楚的原因,它不会归零并且在重负载下保持正数。我希望也许有更好的方法来跟踪这些开放渠道?
@Override
protected void initChannel(SocketChannel channel) throws Exception {
currentConnections.incrementAndGet();
channel.closeFuture().addListener(f -> currentConnections.decrementAndGet());
}
更新: 因此,在客户端停止发送流量并断开连接后,该数字保持正数。
【问题讨论】:
-
重负载下不归零?如果负载很重,为什么会期望没有连接?
-
没错,我应该说的是,在大量消息爆发之后,当测试停止发送新消息并且客户端终止时,我希望看到 0。
-
它(很可能)是与 TCP/IP 堆栈相关的thing。基本上连接不会立即关闭,但它会“徘徊”一段时间。这很正常,除非它给您带来问题(资源耗尽),否则无需触摸它。
-
这是一个很好的解释,但这个数字似乎永远不会下降。
-
那么你需要它下降有什么原因吗?你为什么要跟踪它?您是否有问题,或者您只是希望它以某种方式运行?