2015-10-12 39 views
2

我正在使用myBatis POOLED datasource。下面是連接池的配置 -mybatis POOLED datasource

poolMaximumIdleConnections: 5 
poolMaximumActiveConnections: 20 

我打的服務與102, 742 request (160 TPS),得到了以下指標通過使MyBatis的對數

No of Request: 102,742 

No of Created connection: 8,841 
No of Checked out connection: 93,901 

No of Returned connection: 93,911 
No of Closed connection: 8,831 

No of Claimed overdue connection: 0 
No of bad connection: 0 
  1. 爲什麼如果池大小是20 8841連接得到建立。它不應該從池中創建只有20個連接和重用嗎?
  2. 有8,841個連接創建,但只有8,831個關閉。這是否意味着10個連接仍然打開 - 連接泄漏?

回答

1

正如你可以在源代碼中看到,「退房」的連接是指把它從空閒池(如果有),見行375

如果沒有availble的是,代碼試圖「創建」一個(見第381行)

所以,檢出意味着「重用」,它解釋了「檢出」數字。

當然,沒有人永遠活着 - 即使是舊的關係都不會。因此,較舊的連接通常會在閒置一段時間後死亡,這意味着閒置池會縮小,如果您需要某些連接,則需要新的連接。這導致了「創建」連接的數量。

不,如果最後還有10個還活着,那可能是完全正常的。正如你所看到的,10個連接還沒有關閉,這通常意味着某些東西仍然使用它們。或者這可能是一個錯誤,很難說。