使用短连接,即连接然后断开,一直如此。发现,当端口被该程序占用 28000 多个时,就会出现 Cannot assign requested address。 系统一共应该有 6w 个端口啊,为什么只用 28000 左右就挂了,而且低位端口有部分没有被使用额。
     1 
                    
                    Finest      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 
                    
                    Finest      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 下次连接才可以重新开始。 
                 |