2014-09-06 95 views
1

我正在一個網站上工作,該網站需要同時處理來自同一個表的多個請求。我們在CakePHP中創建了一個簡單的索引頁面,它從數據庫中抽取一些數據(準確地說是10行),同事執行了一個模擬1000個用戶同時查看同一頁面的測試,這意味着將發出1000個相同的請求到數據庫。問題是,在大約500個請求中,數據庫停止響應,一切都凍結了,我們不得不殺死進程。CakePHP和連接池

想到的是每個請求都是在自己的連接上執行的,這就解釋了爲什麼MySQL服務器不堪重負。從網上的一些搜索和SO上,我可以看到PHP本身不支持連接池,例如可以在Java應用程序中完成。但是,基於CakePHP 2.5.3構建應用程序後,我想認爲有一些基本機制可以克服這些限制。也許我沒有做正確的事情?

任何建議是值得歡迎的,我只是想確保用盡每一個可能的解決方案。

+0

你見過'在persistent'選項[數據庫配置](http://book.cakephp.org/2.0/en/development/configuration.html#database-configuration)? – user221931 2014-09-06 14:39:54

+0

在我的配置中,'persistent =>'false'',並且誠實地說,我懷疑強制連接數據庫是個好主意......我的意思是說,在目前階段,我只是從數據庫中恢復10行,僅此而已 - 僅此而已 - 爲什麼要使用持久連接?所以理論上它應該在查詢後釋放任何資源,對吧? – IMIordanov 2014-09-07 11:03:35

+0

如果您不想在每次腳本運行或有多個連接時都設置和銷燬連接,請使用''persistent''。你確定你明白你的數據庫爲什麼會暫停嗎?你有沒有看過日誌來搞清楚?你的數據庫應該能夠處理500個簡單的10條記錄選擇,因爲它們很可能是查詢緩存的並且來自內存,所以我猜想其他的東西是應該指責的。另外我希望你不要在調試時設置「debug」。 – user221931 2014-09-07 17:00:03

回答