1. 程式人生 > >ECSHOP info: Can't pConnect MySQL Server(localhost:3306)!

ECSHOP info: Can't pConnect MySQL Server(localhost:3306)!

時有 mys 應該 conn server 無法 占用 nbsp 釋放

ecshop默認用的是普通連接方式,從報錯中看出你用的是pconnet方式,此方式在並發量比較大時有以下蔽端:

apache模塊方式下:
區別在於當php以apache模塊方式運行時, 由於apache有使用進程池, 一個httpd進程結束後會被放回進程池, 這也就使得用pconnect打開的的那個mysql連接資源不被釋放, 於是有下一個連接請求時就可以被復用.

這就使得在apache並發訪問量不大的時候, 由於使用了pconnect, php節省了反復連接db的時間, 使得訪問速度加快. 這應該是比較好理解的.

但是在apache並發訪問量大的時候, 如果使用pconnect, 會由於之前的一些httpd進程占用的mysql連接沒有close, 則可能會因為mysql已經達到最大連接著, 使得之後的一些請求永遠得不到滿足.

例如:
若mysql最大連接數設為500, 而apache的最大同時訪問數設為2000
假設所有訪問都會要求訪問db, 而且操作時間會比較長

當前500個請求的httpd都沒有結束的時候...之後的httd進程都是無法連接到mysql的(因已經達到mysql最大連接數). 只有當前500個httpd進程結束或被復用才可以連接得到了mysql。

ECSHOP info: Can't pConnect MySQL Server(localhost:3306)!