監控資料庫連線遇到的一個小問題

zchbaby2000發表於2020-03-28

最近遇到一個資料庫方面的問題,資料庫所在的檔案系統處於read-only狀態以後,DB2例項雖然已經啟動,這時連線資料庫,會hung在那裡,很久沒有反應,並且db2diag日誌裡面有大量的錯誤資訊丟擲。

這篇短文並不是討論這個問題怎麼解決,因為解決起來很簡單。有時候遇到一個問題以後,會突然反思之前的一些設計,聯想到之前工作中的不妥之處。

我想到我多年之前寫的一個關於監控DB2狀態的的指令碼,其中有一個監控是連線資料庫,看是否能夠獲得資料庫連線,當時是採用的方式是:

  • rtnValue=`db2 connect to ${dbName}`

然後判斷rtnValue是否為0


從最近遇到的這個問題來看,這個方式是存在問題的,如果很久得不到連線,這個指令碼的執行就會hung在這裡,不能及時的返回監控結果。

那麼怎麼解決這個問題那?可以藉助 timeout

  • timeout 30s db2 "connect to ${dbName}"
    rtnValue=$?

透過timeout的方式,這個命令會在30秒內返回。如果發生了上面的這個問題,rtnValue會是 124,否則就是這個命令 db2 "connect to ${dbName}"的返回值。


關於timeout的詳細資訊可以看

timeout --help

...

If the command times out, and --preserve-status is not set, then exit with status 124.  Otherwise, exit with the status of COMMAND.



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/725820/viewspace-2683047/,如需轉載,請註明出處,否則將追究法律責任。

相關文章