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