redis 端口号耗尽

2017-05-27 16:22:45 +08:00
 wangqianping

使用短连接,即连接然后断开,一直如此。发现,当端口被该程序占用 28000 多个时,就会出现 Cannot assign requested address。 系统一共应该有 6w 个端口啊,为什么只用 28000 左右就挂了,而且低位端口有部分没有被使用额。

3478 次点击
所在节点    问与答
16 条回复
hand515
2017-05-27 16:29:01 +08:00
linux 有个端口范围的配置
kanchi240
2017-05-27 16:32:03 +08:00
日志什么的都不贴,怎么看
wangqianping
2017-05-27 16:33:45 +08:00
@hand515 对的。刚看到了
  查看 linux 支持的客户端连接端口范围, 也就是 28232 个端口: 
        cat  /proc/sys/net/ipv4/ip_local_port_range
        32768 - 61000
wangqianping
2017-05-27 16:35:06 +08:00
@kanchi240 不好意思哈,下次提问回注意。问题解决了,因为客户端端口范围是 28000+左右个。
wangqianping
2017-05-27 16:36:31 +08:00
@hand515 但是我有个疑问就是,不是所有端口客户端都可以用么,还是说我要去修改这个值,如果我想用其他端口号的话
hand515
2017-05-27 16:45:49 +08:00
正常来说是都可以用,但有些低位的端口号是系统服务保留的。
你可以修改这个值,一般 1w 到 65535 也是够用的了
julyclyde
2017-05-27 17:47:52 +08:00
问的是 redis 服务器还是客户端啊?
redis 服务器“只使用”一个端口号
wangqianping
2017-05-27 19:06:51 +08:00
@julyclyde 客户端
kanchi240
2017-05-27 22:49:39 +08:00
@wangqianping 还有个问题,已经使用了短链接,为什么还会出现这个问题呢??
记得我以前压测时,出现过类似问题,后来换短链接解决的
fuxkcsdn
2017-05-27 23:42:56 +08:00
@kanchi240 把 tcp time_wait 设短点,即使你客户端正常关闭了链接,服务器端也是会保持一段时间的
BOYPT
2017-05-27 23:44:42 +08:00
很频繁的话应该考虑连接池吧
wangqianping
2017-05-28 10:21:02 +08:00
@kanchi240 就是短连接才有啊,长连接就没有。短时间大量连接释放,就会导致端口不够用。因为端口来不及被释放
wangqianping
2017-05-28 10:23:10 +08:00
@fuxkcsdn 嗯嗯,对的。只不过我没权限😂。然后我的目标也是测试默认条件下的极限就没改。
wangqianping
2017-05-28 10:24:15 +08:00
@BOYPT 不不不,我的目的就是测试短链接。😂,故意做的这个实验?
BOYPT
2017-05-28 12:43:47 +08:00
@wangqianping #14 那你是开了两万 8 并发的操作呀??不然短链接主动释放了应该很快可以重新使用了,除了 ip_local_port_range 加大可用范围,配置 tcp_tw_recycle、tcp_tw_reuse 等参数可以更加合理的重复使用。

其实这是 tcp 客户端的通用,跟 redis 倒是没关系。
wangqianping
2017-05-28 13:26:55 +08:00
@BOYPT 我这边没开连接重用所以要等连接释放 60s 下次连接才可以重新开始。

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

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

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

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

© 2021 V2EX