あなたのシステムが現在Unixベースであると仮定しましょう(あなたの問題ステートメントで与えられているように)。これが正しければ、発生する可能性のある一連の問題は次のとおりです。
-
メモリ が不足しています MySQLで利用可能です。
これはあなたが直面している最も可能性の高い問題です。 MySQLの接続プール内の各接続は、機能するためにメモリを必要とし、このリソースが使い果たされると、それ以上接続を確立できなくなります。もちろん、さまざまな操作のメモリフットプリントと最大パケットサイズは、で調整できます。
my.cnf
に相当します これが問題であることがわかった場合。ここで役立つ追加のスレッドがあります 、ただし、
top
などのより単純なプロファイリングツールの使用を検討することもできます。 何が起こっているのかについての良い球場の見積もりを得るために。 -
ファイル記述子 が不足しています。 MySQLユーザーアカウントで利用できます。
もう1つの一般的な問題:1,024境界を超えるファイルIOを必要とする要求を処理しようとすると(デフォルト)、操作が単に失敗する場合が発生します。これは、ほとんどのシステムで、各ユーザーが一度に使用できるオープンファイル記述子の数にソフト制限とハード制限が指定されており、このしきい値を超えると問題が発生する可能性があるためです。
これには通常、ログファイルに一連の明白な兆候が示されます。
/var/log/messages
を確認してください および同等のディレクトリ(たとえば、/var/log/mysql
何か面白いものが見つかるかどうかを確認します。 -
ライブロックまたはデッドロック に遭遇しました スレッドが満足できないシナリオ。
メモリとファイル記述子の枯渇の結果として、システムが処理できる計算負荷を超えた場合、スレッドがタイムアウトする可能性があります。このエラーメッセージはスローされませんが、これは将来的に注意が必要なことです。
-
システムで、
fork
で使用できるPIDが不足しています。 。別の一般的なシナリオ:
fork
いつでも使用できるPIDは非常に多くあります。システムが単にoverforked の場合 、リクエストを処理できなくなります。 これを確認する最も簡単な方法は、他のサービスがマシンに接続できるかどうかを確認することです。たとえば、ボックスにSSHで接続しようとして、できないことを発見することは大きな手がかりです。
-
アップストリームプロキシまたは接続マネージャーがリソースを使い果たし、サービス要求の処理を停止しました。
クライアントとMySQLの間にサービスレイヤーがある場合は、クラッシュ、ハング、またはその他の方法で不安定になっていないかどうかを検査する必要があります。上記のアドバイスが適用されます。
-
ポートマッパーは、65,536回の接続後に 。
可能性は低いですが、繰り返しになりますが、倦怠感の可能性があります。上記のように些細なサービス接続をチェックすることは、えーと、ここでの呼び出しの最良のポートでもあります。
つまり、これはリソースの枯渇シナリオであり、サーバーが単に「ダウン」していることも含まれます。 ブロックしているものを確認するには、システムのプロファイルをさらに作成する必要があります。この場合のすべてのエラーメッセージは、クライアントがリソースを利用できないという事実です。サーバーに関する詳細情報を確認する必要があります。 より適切な救済策を決定するため。