Redis连接问题:dial tcp [IP]:PORT: connect: cannot assign requested address

背景

有一次发现线上业务突然告警,有不少接口失败率暴增。看了下错误码和日志,提示这个dial tcp [IP]:PORT: connect: cannot assign requested address,大概就可以确定是redis连接问题。


原因

在网上查了下,发现这个是Linux上分配的客户端连接端口用尽,无法建立socket连接所致,虽然socket已经关闭了,但端口不是立刻释放的。项目中访问redis用了连接池,但线上的空闲最大连接数有问题,设置太小了。但线上访问请求量不低,就会导致每时每刻有不少redis连接,但又无法放回连接池内被释放掉,但释放又有时间延迟,然后下一秒又有继续大量请求,这样随着时间的增长,机器的可用端口就会出现用尽的情况


解决

直接提高连接池的空闲最大连接数。
也可以考虑修改Linux端口关闭的延迟时间,不过这不是本质原因。

欢迎关注个人公众号: 极客星语,定时更新技术文章!


极客星语

你可能感兴趣的:(Redis连接问题:dial tcp [IP]:PORT: connect: cannot assign requested address)