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端口关闭的延迟时间,不过这不是本质原因。

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


极客星语
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容