貼文者 : : 站長
Too many connections , 本站目前解決方案 - 2004-04-27 00:46:31
因為本站同時有許多網友在瀏覽,只要有一兩個網友 新增/刪除/修改 文章
就會造成資料庫 table 鎖定,此時網站好像沒反應似的
新的 request 將會被 MySQL 給 queue 住,在累積 connections 的過程中,如果我不中途把 http daemon 給暫時 stop 掉,整個網站會一直沒反應,但不會拒絕連線,新的連線請求會一直加到資料庫 reuqest queue 中,直到一百個 connections 滿載 (mysql 內定)。
從 一兩個 connections 累積到 100 個 connections 大概費時 3~5 分鐘(依照當時流量),此時螢幕就會顯示一長串 " Too many connections " 的錯誤訊息。
此時 mysql 會消耗內部 table lock , 某些 request 要 insert/update/delete 某個 row , 而其他的 request 要 select... MySQL 內部有個 timeout 機制處理這個 deadlock , 不處理完此事其他 connections 無法進來。
處理此 lock 大概得費時 數分鐘...,接著 connections 數量才會降到 100 以下,但是如果此時大家仍然不斷點選本網站,網站仍會繼續沒反應,又有可能出現 Too many connections 的錯誤訊息。依照以往經驗,從出現 Too many connections 到大家可以繼續瀏覽本網站,如果我不人工介入的話,大概得消耗十分鐘左右!
現在,我把連線上限修改為 10 個 connections , 這有什麼影響?如果人多而又有人要 insert/delete/update 某個 row 的時候,會 更快/更容易看到 Too many connections 的錯誤 ,但是相對地, 系統復原也更快 。不用累積到 100 個 connections 才阻擋大家進來,現在 10 個連線大家就進不來。此時系統處理 deadlock 會更快,大家也不用等太久就可以看到網站恢復正常。
前面看不懂沒關係,在此提供三點方法請大家遵守:
1. 儘量登入系統,不要登出系統。最好一直登入系統(勾選「記住我的帳號密碼」)。
2. 貼文謹慎 , 請參考此連結
3. 當您按下本站某連結發現沒反應時,請不要再繼續點選其他連結或是 重新載入 網頁,這樣只會雪上加霜。請暫時離開本站,到外面逛一下,約一兩分鐘後再來即可。
要根本解決此問題,在於引入高速高檔的伺服器主機,大概要花六萬以上(SCSI 硬碟為必需品)。本站目前無此預算,請大家多體諒,共體時艱。
就會造成資料庫 table 鎖定,此時網站好像沒反應似的
新的 request 將會被 MySQL 給 queue 住,在累積 connections 的過程中,如果我不中途把 http daemon 給暫時 stop 掉,整個網站會一直沒反應,但不會拒絕連線,新的連線請求會一直加到資料庫 reuqest queue 中,直到一百個 connections 滿載 (mysql 內定)。
從 一兩個 connections 累積到 100 個 connections 大概費時 3~5 分鐘(依照當時流量),此時螢幕就會顯示一長串 " Too many connections " 的錯誤訊息。
此時 mysql 會消耗內部 table lock , 某些 request 要 insert/update/delete 某個 row , 而其他的 request 要 select... MySQL 內部有個 timeout 機制處理這個 deadlock , 不處理完此事其他 connections 無法進來。
處理此 lock 大概得費時 數分鐘...,接著 connections 數量才會降到 100 以下,但是如果此時大家仍然不斷點選本網站,網站仍會繼續沒反應,又有可能出現 Too many connections 的錯誤訊息。依照以往經驗,從出現 Too many connections 到大家可以繼續瀏覽本網站,如果我不人工介入的話,大概得消耗十分鐘左右!
現在,我把連線上限修改為 10 個 connections , 這有什麼影響?如果人多而又有人要 insert/delete/update 某個 row 的時候,會 更快/更容易看到 Too many connections 的錯誤 ,但是相對地, 系統復原也更快 。不用累積到 100 個 connections 才阻擋大家進來,現在 10 個連線大家就進不來。此時系統處理 deadlock 會更快,大家也不用等太久就可以看到網站恢復正常。
前面看不懂沒關係,在此提供三點方法請大家遵守:
1. 儘量登入系統,不要登出系統。最好一直登入系統(勾選「記住我的帳號密碼」)。
2. 貼文謹慎 , 請參考此連結
3. 當您按下本站某連結發現沒反應時,請不要再繼續點選其他連結或是 重新載入 網頁,這樣只會雪上加霜。請暫時離開本站,到外面逛一下,約一兩分鐘後再來即可。
要根本解決此問題,在於引入高速高檔的伺服器主機,大概要花六萬以上(SCSI 硬碟為必需品)。本站目前無此預算,請大家多體諒,共體時艱。