今天,咱們性能測試的環境出現個奇怪現象,經過oci direct load回庫的進程彷佛僵死了,應用端cpu 200%(兩個線程在跑,一個是一直在ocidirectload沒反應,另一個是正在sem_trywait),以下:git
oracle服務器端從一開始收到請求並執行完成以後,就沒有反應了,也沒有等待事件,session狀態爲inactive(這沒有任何反作用),ash中在此以後就沒有這個session的任何記錄了,多個分庫都是同樣的現象(比較坑的是,這個動態庫是咱們研發中心開發的,代碼不open)。github
目前問題尚未時間查,主要懷疑多是表空間滿,今天又出來了,不一樣的位置,可是內部都是在調用oci direct load的邏輯沒有正常返回結果碼的問題,經測試,不是這個問題。今天的異常以下:數據庫
繼續查看了各服務器到數據庫的網絡鏈接狀態,oracle服務器節點都是keepalived,應用端爲off,以下:服務器
輸出各列的含義以下:網絡
之前都是等待超時之類的,off的狀態網上介紹也比較少。它是經過-o選項出來的,也就是網絡計時器。經仔細查找,off的含義以下:session
keepalive
- when the keepalive timer is ON for the socketon
- when the retransmission timer is ON for the socketoff
- none of the above is ONoracle
如上述所示,Recv-Q Send-Q 都是0。man也沒有寫timer的含義。因此這個問題基本上推測就在Timer身上。socket
鏈接狀態轉換圖以下:性能
參考:測試
https://superuser.com/questions/240456/how-to-interpret-the-output-of-netstat-o-netstat-timers
https://github.com/netty/netty/issues/7292