2016-11-07 70 views
0

您好我有點搞不清來定義我的問題的標題,但這裏是我的情況和問題:MySQL的突然太多的連接

我有PHP和MySQL創建了一個雲應用程序(我使用谷歌雲SQL)

我的數據庫正在積極獲取新數據的千每秒(包含我的很多用戶位置和活動)

我創建一個PHP程序中包含的查詢來提取這些數據的洞察力:

SELECT username,time_of_activities FROM (table_name) WHERE latitude>=somevalue AND longitude>=somevalue 

對於每個請求,我有幾個請求連續請求,其中每個查詢將處理我的數據庫中的數百萬行數據。 PHP程序將顯示與用戶活動相關的幾個洞察信息。

我的問題是: 有些時候PHP程序未能完成請求。當請求失敗時,我檢查CloudSQL活動連接,活動連接在幾秒鐘內突然增加4000%。

​​

這樣呢一旦PHP請求失敗。一旦發生這種情況,數據庫將始終返回「太多連接」錯誤,我需要手動重新啓動CloudSQL實例。

有時候這個PHP程序會成功運行,但有時候不會這樣的問題。

所以我的問題是:什麼是錯的?

注意:我已經提出了mysql_close函數來確保每次PHP成功執行查詢時關閉連接。

更新問題: 我試圖檢查我的數據庫中的連接細節,我發現有很多「等待插入」,這是因爲數據庫不斷獲取新數據,同時每秒插入查詢我嘗試選擇數據。

這是什麼導致我的錯誤?如果是,在正常情況下,即使我經常對數據庫執行插入過程,活動連接突然增加了4000%,但是我只有活動的4-6個連接?

感謝

+0

內的誤差有在同一時間 –

+0

@HasiburRahaman任何選擇和更新查詢運行中執行我只是更新我的問題,是的,有選擇和更新在同一時間。我該如何處理這個問題? –

+0

你可以停止插入和更新查詢一次,並檢查你的服務器,如果它停止插入和更新後文件,你必須優化此查詢 –

回答

0

你把finally語句內mysql_close?

http://php.net/manual/en/language.exceptions.php

如果你不把它finally裏面,它可能不會,如果有程序

+0

嗨,好吧,我會嘗試把mysql_close放在每個數據插入和選擇進程的finally異常下。你認爲這可以解決插入和選擇碰撞的問題嗎? –