簡體   English   中英

Codeigniter和太多的數據庫連接? (無法連接…)

[英]Codeigniter and too many database connections? (Unable to connect…)

我有很多cronjobs(50 -100),它們同時開始。 (刷新每個客戶端的數據。)一個小時內要完成許多不同的工作,因此我無法更改工作時間。 為了避免可能的錯誤影響其他任務的刷新,我決定不進行循環-而是執行單個作業。

起初一切都很好-但是現在-擁有大約100個客戶-近30%的工作最終得到了

A Database Error Occurred
Unable to connect to your database server using the provided settings.
Filename: core/Loader.php
Line Number: 346

但是最大 MySQL的連接都沒有達到。 我已經嘗試過在connect和pconnect之間切換,但是thas沒有任何作用。

知道瓶頸在哪里嗎? 以及如何避免這種情況?

默認的最大連接數設置為150。如果您有100個客戶端和執行數據庫查詢的50到100個cronjobs,則我得出100 * 100 =至少10,000個連接。 如果您同時具有10,000個連接,則可能會遇到奇怪的錯誤,例如超時或並發問題(一個腳本鎖定了一個表,而另一個試圖訪問該腳本,雖然這在某些情況下不會出現無法連接的錯誤,但確實會出現) )。 您可以嘗試捆綁查詢。

如果將最大連接數提高到400左右會怎樣? 它會減少數量或減少錯誤嗎?

一種變通辦法是,當作業失敗時,請稍等片刻,然后重試。 更穩定的方法是使用Gearman之類的排隊機制。 這有助於分散負載。

編輯: Codeigniter為您關閉連接,但是您也可以使用

$this->db->close();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM