MySQL连接池优化

  • 短连接:和MySQL交互时,建立连接,用完就关闭
  • 长连接:和MySQL建立的连接在用完后不关闭,放入一个池子中,等待复用

连接池常用的参数

  • 最大空闲连接:表示连接池中最多能容纳多少个空闲的长连接。某个连接处理完事务后,如果连接池未满,那么该连接会被放入连接池中,否则关闭
  • 最大空闲时间:表示一个长连接在连接池中最多存活的时间,超过这个时间,连接将会被关闭
  • 最小连接数:连接池中兜底的连接数量,当连接池中的空闲连接少于此值时,会自动补充连接至池中。
    • 最小连接数必须小于等于最大空闲连接

在GORM中,如果连接请求的数量大于设置的最大空闲连接数量,那么就会创建大量的短链接与MySQL进行交互。在高并发环境下会产生很多短连接,相应的需要主动断开很多短连接。断开短链接的过程中由于四次挥手TIME_WAIT阶段需要等待一定时间,导致端口无法及时释放,就会出现can't assign requested address错误

连接池的核心就是连接复用