#359684 - 2004-04-27 00:46:31
Too many connections , 本站目前解決方案
|
六六大順
|
註冊: 1999-12-22
文章數: 6666
來自: 新竹,台北
|
|
因為本站同時有許多網友在瀏覽,只要有一兩個網友 新增/刪除/修改 文章
就會造成資料庫 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 硬碟為必需品)。本站目前無此預算,請大家多體諒,共體時艱。
|
↑回到頂端↑
|
|
|
|
#359686 - 2004-04-28 14:30:34
Re: Too many connections , 本站目前解決方案
|
六六大順
|
註冊: 1999-12-22
文章數: 6666
來自: 新竹,台北
|
|
回應:
you have to rewrite the php forum such that it uses mysql_connect() (NOT mysql_pconnect()) and retains some of the mysql connection threads on the server side.
最主要的原因是 table lock . 是先因為 table lock 才會導致 too many connections 的 所以,即使加上 connection pool 也無濟於事 (否則本站最多線上四百多人,大家都在 reading , 網站速度仍然飛快...)
而 table lock 的主因: 硬碟不夠快、不是 SCSI 硬碟、資料庫不是獨立主機 ...
|
↑回到頂端↑
|
|
|
|
#359688 - 2004-05-04 23:29:04
Re: Too many connections , 本站目前解決方案
|
六六大順
|
註冊: 1999-12-22
文章數: 6666
來自: 新竹,台北
|
|
回應:
最近常常還是進不來..不知怎麼稿的哩.?
資料庫瓶頸
有人 貼文/刪文/改文 就很有可能如此.
如果大家都在讀文章,線上五百人也不是問題
|
↑回到頂端↑
|
|
|
|
#359689 - 2004-05-07 15:42:39
Re: Too many connections , 本站目前解決方案
|
一元復始
|
註冊: 2004-04-07
文章數: 1313
|
|
|
↑回到頂端↑
|
|
|
|
#359690 - 2004-05-07 16:14:14
Re: Too many connections , 本站目前解決方案
|
六六大順
|
註冊: 1999-12-22
文章數: 6666
來自: 新竹,台北
|
|
回應:
站長大大, 有否考慮到更換database, 微軟的東東, 入門很容易, 但往往維護時的問題一大堆
本站從沒用微軟的東西啊
|
↑回到頂端↑
|
|
|
|
#359692 - 2004-05-09 10:47:40
Re: Too many connections , 本站目前解決方案
|
一元復始
|
註冊: 1999-12-22
文章數: 1072
來自: 台灣新竹
|
|
記住帳號密碼的方式 會不會造成人不在線上 卻依然出現登入狀態ㄋ?
_________________________
Just Keep WALKing...
|
↑回到頂端↑
|
|
|
|
#359694 - 2004-05-09 16:59:08
Re: Too many connections , 本站目前解決方案
|
六六大順
|
註冊: 1999-12-22
文章數: 6666
來自: 新竹,台北
|
|
回應:
記住帳號密碼的方式 會不會造成人不在線上 卻依然出現登入狀態ㄋ?
session timeout 為 10 分鐘 這點您不用擔心
|
↑回到頂端↑
|
|
|
|
#359695 - 2004-05-09 20:05:46
Re: Too many connections , 本站目前解決方案
|
一元復始
|
註冊: 1999-12-22
文章數: 1072
來自: 台灣新竹
|
|
了解 謝謝搖頭站長大大哩~^^~
_________________________
Just Keep WALKing...
|
↑回到頂端↑
|
|
|
|
#359697 - 2004-05-16 01:12:01
Re: Too many connections , 本站目前解決方案
|
六六大順
|
註冊: 1999-12-22
文章數: 6666
來自: 新竹,台北
|
|
回應:
我覺得 Connection Pooling 是有正面效應的。Database Connection 本就 expensive, 會用到 CPU 的不少資源﹐也影響 MySQL 的速度。試想每一 Connection 省一秒﹐每天有多少個 Connection? 省下來的時間可讓 MySQL 處理其它 request, 良性循環﹐現在可是惡性循環啊~~
您提到 Table Lock, 我假定您是用 MyISAM Table Type (supports Table Level Locking). 如確實如此﹐而您的 MySQL 版本又 supports InnoDB 的話﹐我建議您換去 InnoDB Table Type (supports Row Level Locking), 那麼﹐ Insert/Update/Delete 就不需要 Lock 整個 Table 了。
Connection Pool 有效沒錯,但是對本站而言效果可能不顯著 我看這程式碼,應該是沒有處理 connection pool 的機制 也許 php 內部本身就處理了 connection pool , 這我沒研究了...
因為其實 select 是非常快的,幾乎不會有任何延遲 之前某時段線上飆到四百多人,因為那一段時間似乎沒有人正在 insert/update/delete 任何資料 所以即使四百多人,速度仍然像閃電一樣快
至於 InnoDB , 我沒研究,謝謝您提供的方向
|
↑回到頂端↑
|
|
|
|
#359699 - 2004-05-30 21:37:07
Re: Too many connections , 本站目前解決方案
|
見龍在田
|
註冊: 2002-05-04
文章數: 64
|
|
mm我也覺得不是硬體的問題 不知道MYSQL有沒有提供自己的ODBC DRIVER 在ORACLE的環境下 使用GENERIC DRIVER和ORACLE THIN DRIVER效能是差很多的
|
↑回到頂端↑
|
|
|
|
#359700 - 2004-06-14 18:03:45
Re: Too many connections , 本站目前解決方案
|
終日乾乾
|
註冊: 2004-01-31
文章數: 151
來自: HK
|
|
|
↑回到頂端↑
|
|
|
|
4 線上使用者 (4 隱形),
186
Guests and
45
Spiders online. |
Key:
Admin,
Global Mod,
Mod
|
|
81736 使用者
54 討論區
220778 議題
2140883 文章
最高線上使用者: 1162 @ 2018-05-29 02:51:45
|
|
|