mysql 服務(wù)器默認(rèn)斷開86400 (8小時(shí))殿遂,以前搞游戲的時(shí)候經(jīng)常一早起來服務(wù)掛掉(因?yàn)榘胍贡容^多空閑mysql被服務(wù)器斷開了)解決方案 寫一個(gè)線程定時(shí)ping 能解決。
最近搞的游戲加速器項(xiàng)目梭姓。mysql 參數(shù)被運(yùn)維同學(xué)改成10了,導(dǎo)致線上mysql 一直 報(bào)錯(cuò) EOF斗塘,github里面也挺多人說的欣舵。
git圖片.png
經(jīng)過多次調(diào)試無果 以為搞不定就先把
//這樣設(shè)置關(guān)閉掉golang mysql 的連接池,每次查詢時(shí)創(chuàng)建連接揭鳞,因?yàn)榘⒗镌频臄?shù)據(jù)使用域名 地址炕贵,總體下來連接時(shí)間不穩(wěn)定 從毫秒級別 到秒級別 (我線上接口因?yàn)檫@個(gè)參數(shù) 最差時(shí)一個(gè)簡單查詢5s)
SetMaxIdleConns(0) //空閑連接維持?jǐn)?shù)量 0 關(guān)閉
SetMaxOpenConns(0) //限制連接數(shù)量如果有mysql 事務(wù)忘記關(guān)閉 導(dǎo)致連接泄露時(shí)這個(gè)會(huì)加速暴露問題
SetConnMaxLifetime(0) //這個(gè)配合 空閑連接數(shù)量 > 0 時(shí),此參數(shù)要 WAIT_TIMEOUT/2 > maxlitetime
//研究完
SetMaxIdleConns(5) //最多保持5個(gè)空閑連接
SetMaxOpenConns(100) //最大連接數(shù)不超過100
SetConnMaxLifetime(60) //1分鐘一次心跳 WAIT_TIMEOUT 建議(5分鐘~30分鐘之間)
優(yōu)化之后 接口 穩(wěn)定在10毫秒以內(nèi)
修改記錄.png
阿里云參數(shù).png
總結(jié)
環(huán)境 go1.12.5
開發(fā)環(huán)境 window10
線上環(huán)境 centos7 (跨平臺(tái)編譯)
完美解決問題野崇。mark一下簡書發(fā)現(xiàn)挺多小伙伴遇到這個(gè)問題的称开。希望能幫助大家少躺坑。開發(fā)不易乓梨。