美文网首页
Lettuce大量TIME_WAIT连接造成的java.net.

Lettuce大量TIME_WAIT连接造成的java.net.

作者: T__J | 来源:发表于2020-08-21 09:27 被阅读0次

    问题描述

    使用Lettuce进行大量高并发操作时,一段时间后会报错:java.net.BindException: Address already in use: no further information

    奇怪的发现,客户端即本地有大量的TIME_WAIT连接,连接目标是redis端

    只要在application.yml加上lettuce的配置,就没有问题了,不加就会出现上述问题:

    从代码检查参数的使用方式:

    首先分析Lettuce的初始化方法:

    '''

    private LettuceClientConfigurationBuilder createBuilder(Pool pool) {

    if (pool == null) {

    return LettuceClientConfiguration.builder();

    }

    return new PoolBuilderFactory().createBuilder(pool);

    }

    '''

    发现加不加配置,走的路径不同:

    不加配置的话,不使用连接池,就会造成大量的短时连接

    如果加上连接池配置,就会使用连接池,连接会被重用,不会造成大量短时的连接来不及回收

    另外发现,连接池的空闲最大数目和活动数目改成一样,比较正常,如果空闲数目小于活动数目,也会出现之前的问题,

    估计连接回收的太快了

    相关文章

      网友评论

          本文标题:Lettuce大量TIME_WAIT连接造成的java.net.

          本文链接:https://www.haomeiwen.com/subject/bioyjktx.html