wangqianping
V2EX  ›  问与答

redis 端口号耗尽

  •  
  •   wangqianping · May 27, 2017 · 4214 views
    This topic created in 3304 days ago, the information mentioned may be changed or developed.

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

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

    其实这是 tcp 客户端的通用,跟 redis 倒是没关系。
    wangqianping
        16
    wangqianping  
    OP
       May 28, 2017 via iPhone
    @BOYPT 我这边没开连接重用所以要等连接释放 60s 下次连接才可以重新开始。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1020 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 45ms · UTC 18:51 · PVG 02:51 · LAX 11:51 · JFK 14:51
    ♥ Do have faith in what you're doing.