LifeType 中文開發論壇

支援 => 使用與操作 => 主題作者是: TomexOu 於 二月 15, 2005, 03:47:52 下午



主題: pLog v0.32的連線數攻擊
作者: TomexOu二月 15, 2005, 03:47:52 下午
最近我的mysql資料庫常常連線數滿載(Too many connections)
造成pLog及相關使用程式的崩潰...
查詢了mysql連線數監控程式,發現它滿載了,
但全部來自plog的操作,可能被攻擊...

畫面如下:
(http://dabu.twbbs.org/share/plog_mysql.gif)

很早就發現plog頁面的訪客數plugin很多,
大部分來自google或yahoo的搜尋,甚至也被自動貼文程式干擾
不曉得是否是pLog使用 mysql_pconnect(),容易造成佔住連線?!
若改使用一般連線模式(單純connect)可解決呢?

不曉得大家是否也發生這問題?!


主題: pLog v0.32的連線數攻擊
作者: TomexOu二月 15, 2005, 04:06:17 下午
針對plog的問題,我目前先置換pLog的database核心版本(adodb v4.6)
再觀察看看!

若仍crashed,將會採用mysql_connect()來取代原先的mysql_pconnect()函式
雖然會每頁new新的連線,效能差了點,但至少不會佔住連線數process!

最後再不行,只好加大mysql的MaxConnection值,把原先的100再調大!


主題: pLog v0.32的連線數攻擊
作者: markwu二月 15, 2005, 06:01:59 下午
你的這兩個問題應該都是0.32 有的『大問題』,你可以試著用 http://forum.lifetype.org.tw/index.php?topic=23.0 這裏的方法試試看。

Mark

** 已經被念了很多次 pLog 的 DBA 不太行。 pLog 程式架構很好(個人認為),但是 DBA 太差,因為我們這群人對DB都不專精,真希望有人幫忙來看看, Review  一下。  :-P


主題: pLog v0.32的連線數攻擊
作者: TomexOu二月 15, 2005, 08:36:16 下午
感謝markwu的指點,看了上述的文章及far大大的說明
我做了下面的事情來改善plog的效能:

1.更新adodb元件的版本為4.6
2.為plog的tables加上index。
3.調校mysql的效能, 參考far大大的說明,再比對mysql.ini的預設值,加上:
low-priority-updates=ON
set-variable=join_buffer_size=16M
set-variable=max_connections=500
set-variable=wait_timeout=30
query_cache_size=128M

經過以上改進,rendering plog的頁面仍很慢,
可能是query語法的原罪及smarty效能,期待plog 1.0趕緊釋出!
但我會再繼續觀察一陣子,是否仍會佔滿連線的問題。

假如再不濟,只好換掉mysql_pconnect()了,
儘管持續連結有它的好處

這一事件讓我對mysql的調校及連線有比較大的認識,
另外資料庫的query的確要多加注意,以前在上高等資料庫課程時,
單是算join的交集的數學運算式,就讓我們不敢隨便亂寫query的順序了!


主題: pLog v0.32的連線數攻擊
作者: joe二月 22, 2005, 04:42:07 下午
第一次裝PLOG時就遇到這各問題,PLOG是預設用保持連結pconnect,所以會造成連結數過多的問題,人數過多就會造成無法連結資料庫的問題,若只是去提高MYSQL的連結數,仍是治標不治本的方法
解決的方法是將mysql_pconnect改成mysql_connect
你只要找到class/database/adodb/drivers/adodb-mysql.inc.php
理面有兩各部份是用mysql_pconnect,把它改成mysql_connect