2
我有一個基於Joomla1.5的系統。我運行了剖析器,發現mysql_connect()和mysql_close()這兩個函數已經被使用了16次。 我知道這些功能和Joomla 1.5都已被棄用,並被社區強烈禁止。 我的系統正面臨性能問題,有時在高峯時段DB連接線程變得太高(> 100),系統運行速度變慢。雖然我們有專用的Windows服務器。將調用mysql_connect()和mysql_close()16次導致高數據庫連接?
Below is my DB server configuration:
Windows edition: Windows Server 2008 R2 Standard Service Pack 1
Processor: Intel(R) Xeon(R) CPU X5460 @3.16GHZ 3.16 GHZ (2 Processors)
Installed Memory(RAM): 8.00 GB
System type: 64-Bit Operating system
mysql_connect()函數功能已經在JDatabaseMySQL類的構造使用。這意味着每當我們創建數據庫對象時,這個mysql_connect()就會被執行並創建一個新的連接。
- 我很想知道是否多次調用mysql_connect()函數創建這種高DB連接線程的問題?
- 是否可以使用單個連接而不是初始化對象,因此多次使用 ?如果是的話,我該怎麼做?
- 用mysqli_connect()替換mysql_connection()是否有助於我們改進系統性能?
- Joomla如何管理連接池?
請提供您的答案,但不提示升級Joomla。
能否請您介紹的Joomla如何管理連接池?它將如何檢查現有的數據庫連接? – ursitesion
連接由'JFactory'管理。當某些代碼需要數據庫時,JFactory會檢查它是否已經有連接對象,如果是,則返回它,否則,創建一個新連接並返回它。顯然這隻有在所有代碼都使用'JFactory :: getDBO()'時纔有效。如果一些自定義代碼直接實例化JDatabase,那麼它將始終創建一個新的連接。 – MrCode
另外,Joomla!總是爲每個請求創建一個新的數據庫連接,但它不會跨多個請求共享連接。還要考慮一下ajax或其他請求是否會影響您的分析器正在觀看的內容。 – MrCode