現(xiàn)在業(yè)務(wù)用的數(shù)據(jù)庫(kù)是另一個(gè)云服務(wù)器中的數(shù)據(jù)庫(kù),使用中經(jīng)常出現(xiàn)busy阻塞的情況,排查后發(fā)現(xiàn)是阻塞在數(shù)據(jù)庫(kù)調(diào)用,已經(jīng)加了定時(shí)器,進(jìn)程40s查詢(xún)一下空表,但還是會(huì)出現(xiàn)這種情況。阻塞時(shí)會(huì)一直阻塞在那里,導(dǎo)致后面的請(qǐng)求無(wú)法處理。請(qǐng)問(wèn)大佬們,有沒(méi)有辦法設(shè)置一下數(shù)據(jù)庫(kù)連接超時(shí),數(shù)據(jù)庫(kù)組件是官方提供那個(gè),連接不上直接拋出異常,不要無(wú)休止的等下去。備注一下:云服務(wù)器是阿里云的,網(wǎng)絡(luò)是通暢的,數(shù)據(jù)庫(kù)沒(méi)有問(wèn)題,因?yàn)檫€有另一個(gè)項(xiàng)目也在跑著,那個(gè)很正常。
之前我用阿里云數(shù)據(jù)庫(kù)也遇到過(guò)類(lèi)似問(wèn)題?,F(xiàn)象是mysql連接過(guò)了一段時(shí)間(30秒還是60秒記不清了)不管執(zhí)行什么sql都超時(shí),原因初步判斷為阿里云會(huì)把空閑mysql連接單向關(guān)閉,關(guān)閉時(shí)并不會(huì)通知客戶(hù)端。后來(lái)解決辦法是每隔15秒發(fā)送一個(gè)select 1
維持連接存活,然后就沒(méi)有問(wèn)題了,不知道你的是不是這個(gè)問(wèn)題。你定時(shí)40秒改成15秒試下吧。
就是這種感覺(jué)
最后會(huì)報(bào)一個(gè)數(shù)據(jù)庫(kù)連接錯(cuò)誤。數(shù)據(jù)庫(kù)是云數(shù)據(jù)庫(kù),項(xiàng)目跑在本地,內(nèi)網(wǎng)用。
兄弟們,找到原因了,是硬件問(wèn)題。網(wǎng)線(xiàn)水晶頭連接不穩(wěn)定,會(huì)出現(xiàn)偶爾斷網(wǎng)的情況,如果在斷網(wǎng)期間正好請(qǐng)求了數(shù)據(jù)庫(kù),就會(huì)一直阻塞在那里,折騰死,這個(gè)功能已經(jīng)換java重寫(xiě)了,結(jié)果找到原因了。為什么斷網(wǎng)后,java的連接池不會(huì)出問(wèn)題呢。