✨AI算命大師
議題選項
議題評分
#359684 - 2004-04-26 16:46:31 Too many connections , 本站目前解決方案
站長 離線

六六大順
註冊: 1999-12-21
文章數: 6716
來自: 新竹,台北 ***
因為本站同時有許多網友在瀏覽,只要有一兩個網友 新增/刪除/修改 文章

就會造成資料庫 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 硬碟為必需品)。本站目前無此預算,請大家多體諒,共體時艱。
_________________________

站務區內的文章我一定讀。而其他板面文章我甚少閱讀。
因此,若有事聯絡指教,麻煩請至站務區內貼文,謝謝。


✨ Twitter : http://twitter.com/destinynet
✨ 站長Facebook : http://www.facebook.com/Destiny.Pro

↑回到頂端↑
廣告
#359685 - 2004-04-28 06:05:11 Re: Too many connections , 本站目前解決方案
pingpoing 離線
終日乾乾
註冊: 2004-01-31
文章數: 151
來自: HK
This is not a good approach.
To overcome the MySQL connection problem, 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.
It is not a easy way to do however.

Hope this help
↑回到頂端↑
#359686 - 2004-04-28 06:30:34 Re: Too many connections , 本站目前解決方案
站長 離線

六六大順
註冊: 1999-12-21
文章數: 6716
來自: 新竹,台北 ***
回應:

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 硬碟、資料庫不是獨立主機 ...
_________________________

站務區內的文章我一定讀。而其他板面文章我甚少閱讀。
因此,若有事聯絡指教,麻煩請至站務區內貼文,謝謝。


✨ Twitter : http://twitter.com/destinynet
✨ 站長Facebook : http://www.facebook.com/Destiny.Pro

↑回到頂端↑
#359687 - 2004-05-04 15:25:48 Re: Too many connections , 本站目前解決方案
小苦 離線

五福臨門
註冊: 2002-02-07
文章數: 5275
來自: 新店
最近常常還是進不來..不知怎麼稿的哩.?
↑回到頂端↑
#359688 - 2004-05-04 15:29:04 Re: Too many connections , 本站目前解決方案
站長 離線

六六大順
註冊: 1999-12-21
文章數: 6716
來自: 新竹,台北 ***
回應:

最近常常還是進不來..不知怎麼稿的哩.?




資料庫瓶頸

有人 貼文/刪文/改文 就很有可能如此.

如果大家都在讀文章,線上五百人也不是問題
_________________________

站務區內的文章我一定讀。而其他板面文章我甚少閱讀。
因此,若有事聯絡指教,麻煩請至站務區內貼文,謝謝。


✨ Twitter : http://twitter.com/destinynet
✨ 站長Facebook : http://www.facebook.com/Destiny.Pro

↑回到頂端↑
#359689 - 2004-05-07 07:42:39 Re: Too many connections , 本站目前解決方案
伍修羅 離線
一元復始
註冊: 2004-04-07
文章數: 1313
回應:

回應:

最近常常還是進不來..不知怎麼稿的哩.?



資料庫瓶頸
有人 貼文/刪文/改文 就很有可能如此.
如果大家都在讀文章,線上五百人也不是問題



站長大大, 有否考慮到更換database, 微軟的東東, 入門很容易, 但往往維護時的問題一大堆
_________________________
萬般帶不去,唯有業隨身

見微可以知著,一葉可以知秋;讀歷史可以知興替,學兵法得以知正奇.

善戰者之勝也,無奇勝,無智名,無勇功,故其戰勝不忒。不忒者,其所措勝,勝已敗者也。
↑回到頂端↑
#359690 - 2004-05-07 08:14:14 Re: Too many connections , 本站目前解決方案
站長 離線

六六大順
註冊: 1999-12-21
文章數: 6716
來自: 新竹,台北 ***
回應:


站長大大, 有否考慮到更換database, 微軟的東東, 入門很容易, 但往往維護時的問題一大堆



本站從沒用微軟的東西啊 
_________________________

站務區內的文章我一定讀。而其他板面文章我甚少閱讀。
因此,若有事聯絡指教,麻煩請至站務區內貼文,謝謝。


✨ Twitter : http://twitter.com/destinynet
✨ 站長Facebook : http://www.facebook.com/Destiny.Pro

↑回到頂端↑
#359691 - 2004-05-07 08:42:28 Re: Too many connections , 本站目前解決方案
伍修羅 離線
一元復始
註冊: 2004-04-07
文章數: 1313
回應:

回應:


站長大大, 有否考慮到更換database, 微軟的東東, 入門很容易, 但往往維護時的問題一大堆



本站從沒用微軟的東西啊 



對不起, 我錯了...
_________________________
萬般帶不去,唯有業隨身

見微可以知著,一葉可以知秋;讀歷史可以知興替,學兵法得以知正奇.

善戰者之勝也,無奇勝,無智名,無勇功,故其戰勝不忒。不忒者,其所措勝,勝已敗者也。
↑回到頂端↑
#359692 - 2004-05-09 02:47:40 Re: Too many connections , 本站目前解決方案
Miki 離線
一元復始
註冊: 1999-12-21
文章數: 1072
來自: 台灣新竹
記住帳號密碼的方式
會不會造成人不在線上
卻依然出現登入狀態ㄋ?
_________________________
Just Keep WALKing...
↑回到頂端↑
#359693 - 2004-05-09 02:56:13 Re: Too many connections , 本站目前解決方案
命也!! 離線
一元復始
註冊: 2004-02-03
文章數: 2075
來自: 冷冷的下雨天
回應:

最近常常還是進不來..不知怎麼稿的哩.?



還不是你偷懶~~~整天都在路上撿光碟~~撿到也不分享給小弟~~
_________________________
下雨了~輕輕的雨聲~淡淡的山岳天~~ 存好心~做好事~說好話~~簡簡單單三句話~~ 只有執行力~才會讓人成長~ 保持開放的態度去看人事物 別期待事情應該是怎樣進行 "勇於敢則殺,勇於不敢則活。" 小弟白字多~~傷到大大的眼睛~真是對不起你們~
↑回到頂端↑
#359694 - 2004-05-09 08:59:08 Re: Too many connections , 本站目前解決方案
站長 離線

六六大順
註冊: 1999-12-21
文章數: 6716
來自: 新竹,台北 ***
回應:

記住帳號密碼的方式
會不會造成人不在線上
卻依然出現登入狀態ㄋ?



session timeout 為 10 分鐘
這點您不用擔心
_________________________

站務區內的文章我一定讀。而其他板面文章我甚少閱讀。
因此,若有事聯絡指教,麻煩請至站務區內貼文,謝謝。


✨ Twitter : http://twitter.com/destinynet
✨ 站長Facebook : http://www.facebook.com/Destiny.Pro

↑回到頂端↑
#359695 - 2004-05-09 12:05:46 Re: Too many connections , 本站目前解決方案
Miki 離線
一元復始
註冊: 1999-12-21
文章數: 1072
來自: 台灣新竹
了解
謝謝搖頭站長大大哩~^^~
_________________________
Just Keep WALKing...
↑回到頂端↑
#359696 - 2004-05-15 17:02:26 Re: Too many connections , 本站目前解決方案
七龍珠 離線
或躍在淵
註冊: 2004-05-04
文章數: 257
來自: 花果山
回應:

回應:

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 硬碟、資料庫不是獨立主機 ...






我覺得 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 了。



我覺得硬件倒不是最主要的原因﹐因為 PHP Web Application 及 Database Design 還有很多待改善的空間﹐MySQL Performance Tuning 也會有明顯的幫助。
_________________________
命運可改變﹐先問您意願。旁人幫不了﹐命運在您手。
有病方為貴﹐無煞不成奇。逆境要求存﹐強者得永生。
↑回到頂端↑
#359697 - 2004-05-15 17:12:01 Re: Too many connections , 本站目前解決方案
站長 離線

六六大順
註冊: 1999-12-21
文章數: 6716
來自: 新竹,台北 ***
回應:


我覺得 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 , 我沒研究,謝謝您提供的方向
_________________________

站務區內的文章我一定讀。而其他板面文章我甚少閱讀。
因此,若有事聯絡指教,麻煩請至站務區內貼文,謝謝。


✨ Twitter : http://twitter.com/destinynet
✨ 站長Facebook : http://www.facebook.com/Destiny.Pro

↑回到頂端↑
#359698 - 2004-05-15 17:57:38 Re: Too many connections , 本站目前解決方案
七龍珠 離線
或躍在淵
註冊: 2004-05-04
文章數: 257
來自: 花果山
回應:

Connection Pool 有效沒錯,但是對本站而言效果可能不顯著
我看這程式碼,應該是沒有處理 connection pool 的機制
也許 php 內部本身就處理了 connection pool , 這我沒研究了...

因為其實 select 是非常快的,幾乎不會有任何延遲
之前某時段線上飆到四百多人,因為那一段時間似乎沒有人正在 insert/update/delete 任何資料
所以即使四百多人,速度仍然像閃電一樣快

至於 InnoDB , 我沒研究,謝謝您提供的方向




現在我對這問題有比較多的概念了﹐而 MyISAM 的假定也成立了﹐以下是我的看法:

目前最迫切的不是 Connection Pooling, 要改也要查比較多程式碼﹐所以容後再處理。

看來﹐把 Table Type 從 MyISAM 換去 InnoDB 是比較恰當﹐快﹐且省時的做法。
_________________________
命運可改變﹐先問您意願。旁人幫不了﹐命運在您手。
有病方為貴﹐無煞不成奇。逆境要求存﹐強者得永生。
↑回到頂端↑
#359699 - 2004-05-30 13:37:07 Re: Too many connections , 本站目前解決方案
jerryen 離線
見龍在田
註冊: 2002-05-04
文章數: 64
mm我也覺得不是硬體的問題
不知道MYSQL有沒有提供自己的ODBC DRIVER
在ORACLE的環境下
使用GENERIC DRIVER和ORACLE THIN DRIVER效能是差很多的
↑回到頂端↑
#359700 - 2004-06-14 10:03:45 Re: Too many connections , 本站目前解決方案
pingpoing 離線
終日乾乾
註冊: 2004-01-31
文章數: 151
來自: HK
↑回到頂端↑





本站是個命理討論的園地,如果您要問命,請務必詳閱各板板規,遵守發問規則,不要只留個生日或是命盤, 其他什麼都沒提。貼命盤的方法請特別注意算完命盤後的文字說明,不要貼個沒人看懂歪七扭八的命盤, 貼錯命盤及未遵守板規者,文章很有可能被不預警刪除 另外,如果您提了問題,而有人回覆的話,不論對與錯,請務必多上來回應論命者, 我們不歡迎那種提了問題就等人回答,也不回應的人。我們需要的是,「良好的互動」及「長期的追蹤」。
本站大多數的討論區都得要註冊才能發言,您若是要張貼討論,請務必註冊為使用者, 如果您忘了您的密碼,請在登入」的畫面, 輸入您的帳號,再按一下我忘記我的密碼了」, 此時系統會寄一封信到您當時註冊的 Email 信箱裡面, 裡面則附有一個臨時密碼,請您拿到密碼後用此臨時密碼登入。登入之後可以在 編輯個人檔案」裡面修改成您習慣的密碼。
logo
欣洋網路有限公司