2017-01-06 17 views
0

因此,在研究了這個問題之後,我正在爲遇到此問題並找到出路的人尋求幫助。我收到此錯誤?錯誤:(1226)用戶'qe'已超過'max_user_connections'資源(當前值:30)

我們開發了一個PTC腳本爲客戶和它工作得很好,但隨着用戶增長也開始顯示錯誤是如下:

錯誤:(1226)用戶「乂」已超過「 max_user_connections的資源(當前值:30)

現在,在尋求幫助後,有人說與服務器相關的問題,其他人指出這是與腳本的數據庫設計有關的問題。

期待解決這個問題的方法。已經嘗試了很多東西。

現在使用godaddy託管,他們將Limit從30增加到了50,但是我確信問題會再次出現。

+0

您需要提供一些關於該軟件的附加細節以及如何生成該錯誤。你還應該描述你所嘗試過的,你正在使用的是什麼數據庫(MySQL?PostgreSQL?Oracle?MSSQL?) 它確實聽起來像一個數據庫問題。 –

+0

我們使用Mysqli,PHP編寫的腳本。當網站上的用戶數超過時,會顯示錯誤。用戶來到網站點擊廣告。 –

+1

這可能是您的腳本無法正確關閉連接。您通常在網站上有多少個併發連接? – spencdev

回答

-1

數據庫沒有問題,問題在於如何處理來自軟件的數據庫連接。

您的腳本設置的方式是每個連接到您的Web服務器也打開一個連接到MySQL的連接。這不是你想要的場景。

提高限制不會解決問題,它只會延遲另一個錯誤。你應該做的是使用持久連接。

使用php-fpm而不是服務器API(如mod_php)的原因之一是因爲啓動了一定數量的PHP進程並創建了與服務的連接池。

,流量爲以下幾點:

  • 使用php-fpmApachenginx可以使用FCGI接口來說話php-fpm進程
  • php-fpm提高子進程的數量。這不應該過大,默認的配置通常工作了,我會讓你不跑六核系統中的猜測,所以4-6的子進程應該罰款
  • 使用持久的MySQL連接

這是做什麼用的?您的服務器接受請求並將其發送到php-fpm,它在空閒時對其進行處理。每個進程使用1個連接到MySQL。這意味着你永遠不會像你一樣遇到某種硬性限制。

如果你的服務器很忙,服務器應該排隊請求,直到PHP能夠處理它們。無論你使用的是Apache還是nginx,這種方法都能正常工作。

如果您的網站很忙,那麼Web服務器可能會更快地接受連接並提供PHP用於處理動態內容的靜態內容。在這種情況下,您可以選擇添加運行php-fpm的另一臺物理機(或更多)。對於提到的兩個Web服務器,指導您的Web服務器在爲PHP提供服務的計算機之間進行循環訪問是微不足道的。

底線是你想以最佳的方式利用你的資源。在每個請求上打開和關閉MySQL連接都不是最佳選擇。連接池是。

+1

註釋假設db服務器對max_connections有合理的設置,並且假設代碼沒有發佈任何代碼。海報試圖在明顯的noob用戶上完全分離技術。 –

+0

@ N.B。你的回答開啓了我甚至沒有想到的新維度。 (S.Imp)以前我一直在使用不同的技術來改變和優化我的數據庫表,這顯然不能解決我的問題。由(N.B.)強調的問題總是有意義的,因爲我沒有處理任何與打開和關閉從用戶到數據庫的連接相關的任何事情。謝謝您的幫助。 –

+0

@ N.B。 OP的進程表明他們正在與基本概念作鬥爭。鼓勵他們改變基本的php/web服務器安裝似乎完全不合理 - 你的建議沒有提供關於他們如何使用php-fpm的細節。您不提供任何鏈接或文檔或說明或任何內容。如果你要迂腐,至少要徹底。 –

相關問題