簡體   English   中英

與Laravel 5.4和Mariadb的連接錯誤太多

[英]Too many connections error with Laravel 5.4 and Mariadb

我最近將我的laravel應用程序從5.1升級到5.4。 我的服務器現在是PHP 7和Maria db 10.1.22。 現在我得到一個非常奇怪的錯誤。 有時候,我會嘗試刷新瀏覽器,PHPMyAdmin會顯示#1040 - Too many connections 其他時候我會點擊我的應用程序上的新鏈接,然后會得到同樣的錯誤。 我在互聯網上做了一些研究並執行了以下命令:

show variables like 'max_connections`

上面的命令給出了100.然后我增加到500。

但現在我仍然得到錯誤。 這對我來說很奇怪,因為我在另一台服務器上安裝了oracle mysql 5.6並且max_connections是151,並且超過一年半我沒有遇到過這個錯誤。

當我運行命令show processlist ,我得到下面的結果,並且這種情況不斷增加。 這是正常的嗎?

在此輸入圖像描述

可能是Mariadb的問題,我該如何解決它。

我不確定你們是否找到了解決方案,但我也遇到了同樣的問題並找到了解決方案。 當我們將laravel應用程序從5.2 - 5.4升級時,我們錯過了一些重要的東西。 php artisan隊列:工作也已升級。

在laravel 5.2中,當我們執行queue:work時。 它只是一次處理一個作業,但是在laravel 5.4隊列中:work為隊列創建連接並保持連接。 因此,如果您有隊列:在您的cron中工作以便每分鍾運行一次,它將每分鍾創建一個新連接,這就是我們得到太多連接錯誤的原因。

我沒有在laravel 5.4文檔中找到這些信息。 我正在通過php artisan來查看queue:work的描述並發現描述已更改。

這是laravel 5.2中的描述:

queue:work >>>>處理隊列中的下一個作業

這是laravel 5.4中的描述

queue:work >>>>開始將隊列上的作業作為守護進程處理

正如您所看到的那樣,它們的意義不同。

我希望這可以幫助你。

謝謝。

也許這是一個愚蠢的觀察,但你是否使用DB::disconnect('foo')來關閉數據庫的連接?

無論如何,數據庫會自動關閉,因此問題可能出在其他地方,您是否嘗試過監控?

監控MySQL的一個非常強大的工具是innotop 你可以在這里找到它:

https://github.com/innotop/innotop

檢查一下

你在用什么網絡服務器 如果是Apache,那么MaxRequestWorkers (以前稱為MaxClients )的設置是什么呢? 一般來說,它應該不超過20。

如果設置為超過max_connections ,那將解釋您所看到的內容。

暫無
暫無

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

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