gorm连接池的坑

背景

业务有一段时间有大量的短耗时请求,导致业务报错:connect: cannot assign requested address。

原因

Go数据库连接池设置不合理导致大量TIME_WAIT连接占满端口问题排查与解决

MaxIdleConns不能小于MaxOpenConns,否则如果请求量大时,归还给连接池时,只会保留MaxIdleConns数量的连接,会产生大量的连接被建立与关闭:比如MaxOpenConns为100,MaxIdleConns为10,则每一个循坏会导致有90个链接建立与关闭。由于连接需要客户端退出TIME_WAIT(2MSL)状态才会释放,大量的请求会导致大量的连接处于TIME_WAIT状态,从而耗尽系统端口资源,然后报错:connect: cannot assign requested address

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容