[golang]明明关闭了 udp 连接,但 netstat 显示连接越来越多,偶尔会减一个,但减小的速度远远慢于增加的速度

2019-12-20 10:36:40 +08:00
 koebehshian

两个 golang 程序,一个实现通用的功能,接口是 udp server ;

另一个根据业务处理数据,并提供 http 接口;

另外一个 shell 脚本,用 curl 定时调用 http 接口,间接调用了 udp 接口。

结果 netstat 发现与 udp 的连接越来越多,偶尔会减一个,总体一直在增长;

netstat 发现进程 id 是提供 http 接口的那个程序,我使用的是短连接,net.Dial 后,就 defer conn.Close(),按理说肯定能关闭,事实也是并非连接数量不减小,但减小速度太慢了。

5560 次点击
所在节点    Go 编程语言
26 条回复
koebehshian
2019-12-20 14:45:57 +08:00
解决了,是 Read 前没有调 SetReadDeadline
realpg
2019-12-20 18:16:33 +08:00
我比较好奇你这是什么神仙 netstat 能给一个本机 udp 出 established 的状态
koebehshian
2019-12-20 21:27:27 +08:00
koebehshian
2019-12-20 21:35:22 +08:00
@realpg https://github.com/ecki/net-tools/blob/master/netstat.c 第 1288 行`udp_state = _("ESTABLISHED");`
catror
2019-12-20 22:05:08 +08:00
业务程序也用 ListenUDP 就行了,用 DialUDP 确实会有连接
catror
2019-12-20 22:10:19 +08:00
@catror Dial 之后的连接不是 UDP 协议概念上的连接,而是代码实现上的,connected UDP socket

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/630756

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX