2016-07-07 92 views
2

我有一個shell腳本在mysql數據庫中執行一些查詢並處理結果並相應地發送郵件。腳本每15分鐘運行24X7。裏面的shell腳本我只是連接到數據庫使用命令 「MySQL的-Uusername -Ppassword數據庫-s -e-N‘有些查詢到這裏’太多的數據庫連接mysql

所有我想知道的是,這是否腳本必須做一些與db連接泄漏,因爲我永遠執行此腳本。 當我執行以下查詢時,我可以看到每次Connections值在每15分鐘內上升一次。 顯示狀態,如'%Con%';

+----------------------------------------+-------+ 
| Variable_name       | Value | 
+----------------------------------------+-------+ 
| Aborted_connects      | 4  | 
| Com_show_contributors     | 0  | 
| Connections       | 804 | 
| Max_used_connections     | 152 | 
| Performance_schema_cond_classes_lost | 0  | 
| Performance_schema_cond_instances_lost | 0  | 
| Ssl_client_connects     | 0  | 
| Ssl_connect_renegotiates    | 0  | 
| Ssl_finished_connects     | 0  | 
| Threads_connected      | 14 | 
+----------------------------------------+-------+ 

它在某個時間點崩潰嗎?因爲價值永遠不會下降。我知道該值表示出現在db的連接總數。但是,Max_used_connections保持不變。 或者有沒有辦法從shell腳本關閉數據庫連接?

+5

您必須正確關閉每個連接 – JYoThI

+2

您不妨考慮使用MySQL事件來避免連接。讀這個。 https://dev.mysql.com/doc/refman/5.7/en/event-scheduler.html –

回答

4

由於在connections server status variable MySQL文檔說:

連接嘗試(成功或失敗)到MySQL服務器的數量。

因此,這是一個統計數字,顯示自上次重新啓動MySQL服務器以來的連接嘗試次數。

threads_connected status variable顯示當前打開的連接數(您的情況爲14)。如果此狀態變量等於max_connections server SYSTEM variable,那麼您將開始接收太多的連接錯誤消息。

+0

**到MySQL服務器的連接嘗試次數(成功與否)** - 是否有任何限制? 。而** threads_connected **變量與腳本無關,對吧?感謝您的回覆,我會檢查您指出的文件。 – Raj

+0

它只是一個統計數字,如果達到最大值,它將會溢出(重新啓動)。但是,鏈接的MySQL文檔告訴你變量的數據類型,這意味着它的限制。 – Shadow

+0

Threads_connected列出當前打開的所有連接。如果在腳本運行時運行'show variables'查詢,則threads_connected變量將包含命令行客戶端所做的連接。 – Shadow