SetMaxOpenConns(maxOpenConns)
連接池最多同時打開的連接數。
這個maxOpenConns理應要設置得比mysql服務器的max_connections值要小。
一般設置為: 服務器cpu核心數 * 2 + 服務器有效磁盤數。參考這里
可用show variables like 'max_connections'; 查看服務器當前設置的最大連接數。
SetMaxIdleConns(maxIdleConns)
連接池里最大空閑連接數。必須要比maxOpenConns小;
SetConnMaxIdleTime(maxIdleTime)
連接池里面的連接最大空閑時長。
當連接持續空閑時長達到maxIdleTime后,該連接就會被關閉並從連接池移除,哪怕當前空閑連接數已經小於SetMaxIdleConns(maxIdleConns)設置的值。
連接每次被使用后,持續空閑時長會被重置,從0開始從新計算;
用show processlist; 可用查看mysql服務器上的連接信息,Command表示連接的當前狀態,Command為Sleep時表示休眠、空閑狀態,Time表示此狀態的已持續時長;
SetConnMaxLifetime(maxLifeTime)
連接池里面的連接最大存活時長。
maxLifeTime必須要比mysql服務器設置的wait_timeout小,否則會導致golang側連接池依然保留已被mysql服務器關閉了的連接。
mysql服務器的wait_timeout默認是8 hour,可通過show variables like 'wait_timeout'查看。