V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
wangqianping
V2EX  ›  问与答

redis 端口号耗尽

  •  
  •   wangqianping · 2017-05-27 16:22:45 +08:00 · 3465 次点击
    这是一个创建于 2721 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    16 条回复    2017-05-28 13:26:55 +08:00
    hand515
        1
    hand515  
       2017-05-27 16:29:01 +08:00
    linux 有个端口范围的配置
    kanchi240
        2
    kanchi240  
       2017-05-27 16:32:03 +08:00
    日志什么的都不贴,怎么看
    wangqianping
        3
    wangqianping  
    OP
       2017-05-27 16:33:45 +08:00
    @hand515 对的。刚看到了
      查看 linux 支持的客户端连接端口范围, 也就是 28232 个端口: 
            cat  /proc/sys/net/ipv4/ip_local_port_range
            32768 - 61000
    wangqianping
        4
    wangqianping  
    OP
       2017-05-27 16:35:06 +08:00
    @kanchi240 不好意思哈,下次提问回注意。问题解决了,因为客户端端口范围是 28000+左右个。
    wangqianping
        5
    wangqianping  
    OP
       2017-05-27 16:36:31 +08:00
    @hand515 但是我有个疑问就是,不是所有端口客户端都可以用么,还是说我要去修改这个值,如果我想用其他端口号的话
    hand515
        6
    hand515  
       2017-05-27 16:45:49 +08:00
    正常来说是都可以用,但有些低位的端口号是系统服务保留的。
    你可以修改这个值,一般 1w 到 65535 也是够用的了
    julyclyde
        7
    julyclyde  
       2017-05-27 17:47:52 +08:00
    问的是 redis 服务器还是客户端啊?
    redis 服务器“只使用”一个端口号
    wangqianping
        8
    wangqianping  
    OP
       2017-05-27 19:06:51 +08:00 via iPhone
    @julyclyde 客户端
    kanchi240
        9
    kanchi240  
       2017-05-27 22:49:39 +08:00
    @wangqianping 还有个问题,已经使用了短链接,为什么还会出现这个问题呢??
    记得我以前压测时,出现过类似问题,后来换短链接解决的
    fuxkcsdn
        10
    fuxkcsdn  
       2017-05-27 23:42:56 +08:00 via iPhone
    @kanchi240 把 tcp time_wait 设短点,即使你客户端正常关闭了链接,服务器端也是会保持一段时间的
    BOYPT
        11
    BOYPT  
       2017-05-27 23:44:42 +08:00
    很频繁的话应该考虑连接池吧
    wangqianping
        12
    wangqianping  
    OP
       2017-05-28 10:21:02 +08:00 via iPhone
    @kanchi240 就是短连接才有啊,长连接就没有。短时间大量连接释放,就会导致端口不够用。因为端口来不及被释放
    wangqianping
        13
    wangqianping  
    OP
       2017-05-28 10:23:10 +08:00 via iPhone
    @fuxkcsdn 嗯嗯,对的。只不过我没权限😂。然后我的目标也是测试默认条件下的极限就没改。
    wangqianping
        14
    wangqianping  
    OP
       2017-05-28 10:24:15 +08:00 via iPhone
    @BOYPT 不不不,我的目的就是测试短链接。😂,故意做的这个实验?
    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 倒是没关系。
    wangqianping
        16
    wangqianping  
    OP
       2017-05-28 13:26:55 +08:00 via iPhone
    @BOYPT 我这边没开连接重用所以要等连接释放 60s 下次连接才可以重新开始。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1086 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 22:35 · PVG 06:35 · LAX 14:35 · JFK 17:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.