2017-05-29 9 views
3

最近、laravelアプリケーションを5.1から5.4にアップグレードしました。私のサーバはPHP 7とMaria db 10.1.22になっています。今、私は本当に奇妙なエラーが発生しています。時には、私はブラウザをリフレッシュしようとするだけで、PHPMyAdminは#1040 - Too many connectionsと表示されます。他の時間私は私のアプリで新しいリンクをクリックし、この同じエラーが発生します。私は、インターネット上のいくつかの研究を行なったし、以下のコマンドを実行:Laravel 5.4とMariadbの接続が多すぎます

show variables like 'max_connections` 

上記のコマンドは100を与えた私は、その後500

に増加しかし、今、私はまだエラーを取得します。私はoracle mysql 5.6を別のサーバにインストールしており、max_connectionsは151であり、1年半以上私はこのエラーを経験していないので、これは私にとっては変です。

私はコマンドshow processlistを実行すると、私は以下の結果を取得し、これは増加し続けます。これは普通ですか? Mariadbの問題である可能性があり、私はそれをどのように修正することができますどのような

enter image description here

+0

奇妙な!これはlaravelログファイルに記録されていますか?スタックトレースを確認できますか? –

答えて

2

私はあなたたちは解決策を見つけたかどうかが、私も同じ問題に直面していたし、解決策を見つけた場合はわかりません。私たちのララベルアプリケーションを5.2から5.4にアップグレードしたので、私たちは何か重要なことを見逃しました。 php artisan queue:作業もアップグレードされました。

laravel 5.2では、queue:workを実行すると、一度に1つのジョブを処理するだけですが、laravel 5.4のキューでは、キューの接続が作成され、接続が維持されます。ですから、毎分実行するためにcronでqueue:を使用すると、毎分新しい接続が作成されるため、接続が多すぎるというエラーが発生します。

laravel 5.4のドキュメントでこの情報が見つかりませんでした。私はキューの説明を見るために職人さんに行きました:作業と説明が変更されていることがわかりました。

これは、laravel 5の説明です。2:

キュー:仕事>>>>プロセスキュー

これは、上の次のジョブがlaravelで説明がある5.4

キュー:仕事がジョブを処理開始>>>>デーモンとしての待ち行列の上に

あなたはそれらが何を意味するのか分かります。

これがあなたを助けてくれることを願っています。

ありがとうございました。

+0

こんにちは、お返事ありがとうございます。私は数ヶ月前に答えを見つけました。答えを投稿するのを忘れてしまった。 –

0

多分それは愚かな観測ですが、あなたはデシベルのconenctionsをクローズするDB::disconnect('foo')を使用しましたか?

とにかく、DBが自動的に閉じ、その問題がどこかであってもよいし、あなたは監視を試してみたのですか? MySQLを監視する

非常に強力なツールがinnotopです。あなたはここでそれを見つけることができます:あなたは何ウェブサーバを使用している

https://github.com/innotop/innotop

チェックthis

0

を。 Apacheの場合、MaxRequestWorkers(以前はMaxClientsと呼ばれていました)の設定は何ですか?それを超えるmax_connectionsに設定されている場合、一般的に、それはあなたが見ているかを説明することを、これ以上の

約20より

でなければなりません。

+0

こんにちは@Rick James私はApacheを使用しています。私はhttpd.confファイルでMaxClientを見つけることができません。それはどこにあるのですか –

+0

こんにちは@Rick James。確認しました。 'MaxRequestWorkers:150'と' max_connections:151' –

+0

それは私が望むよりも厳しいです。私は500が問題をなくすことはなかったことに驚いています。おそらく私は間違った方向を見ているでしょう。 Apacheサーバーは1つだけですか?何かが「接続プール」をしていますか? –

関連する問題