2009-06-18 9 views
1

トラフィックが多い場合、mysql 5.0.45サーバー/ Apache2/CentOS 5が「mySQLデータベース接続の確立中にエラーが発生しました。私は根本的な原因を見つける必要があります。デバッグ極端な負荷でMySQLデータベース接続を確立する際にエラーが発生しました

原因(メモリ制限、スレッド制限、CPU負荷、低速クエリなど、大規模なデータセット、間違ったキーなど...)を見つけるために必要な手順に関する情報へのポインタは非常に高く評価されます。関連するログファイルなどを調べることが含まれます。

ありがとうございます。

答えて

2

このエラーメッセージは、システムライブラリではなくアプリケーションによって生成されているように聞こえます。 MySQLには発生している特定のエラーを報告する機能があるので、何らかの方法でそのエラーを利用するのが最善の方法です。

たとえば、PHPを使用していた場合、最後に発生したエラー(接続が多すぎるなど)に関する詳細を返すmysql_error()という関数があります。接続呼び出しの近くで何らかのエラー処理を行い、失敗した場合はmysql_error()結果を記録します。

あなたはどの言語を使用しているかは言及していませんが、MySQLライブラリは同じ機能を使用しています。私はそれを活用するためにアプリケーションコードを変更することをお勧めします。

+0

ありがとうございました!私はPHP5とezsqlというライブラリを使用しています。http://www.woyano.com/jv/ezsqlあなたのアドバイスごとにmysqlエラーを出力しようとします(エラーは時折起こります)。 mysqlがそのようなエラーを記録するログはありませんか? – Nir

+0

「新しいスレッド(errno 12)を作成できません。使用可能なメモリが不足している場合は、OS依存のバグの可能性についてマニュアルを参照してください。「エラーの約70% UNIXソケット(12) "約25%、時折"最初の通信パケットを読む "時にMySQLサーバーへの接続が失われました。 「トップ」コマンドが600Mフリーを表示しているため(低トラフィックの場合と同様です)、メモリ上の問題はありません。 – Nir

+1

うーん、面白いです。あなたは、おそらく、これらの特定のエラーに関する助けを得るためにいくつかのグーグルで行う必要があります。 MySQLには、http://dev.mysql.com/doc/refman/5.0/en/server-parameters.htmlにあるサーバーパラメータのチューニングに関するページもあります。一見価値があるかもしれません。 – zombat

1

これは、mysqlサーバーで許可されている最大ユーザー制限に当てはまるためですが、一般的には、画面には表示されませんが、少なくともログや電子メール。

+0

「新しいスレッドを作成できません(errno 12)」、使用可能なメモリが不足している場合は、「エラーの約70%」および「作成できませんUNIXソケット(12) "約25%、時折"最初の通信パケットを読む "時にMySQLサーバーへの接続が失われました。 'Top'コマンドが600Mフリー(低交通量の状況に似ている)を表示しているため、メモリ上の問題ではないようです。 – Nir

+0

Nir、最初のエラーは一般的ですが、後者は情報を見つけるのがほとんど不可能です。 http://bugs.mysql.com/bug.php?id=5656に記載されているように、いくつかの設定を調整することをお勧めします。おそらく、リソースが不足しているOSに関連している可能性があります。おそらく、ulimitが何かのために低すぎると設定されている可能性があります。 ulimit -aを実行します。また、vmstat -a 1を試して、RAMとスワップが何をしているのかを見てください。フリースワップはありますか? –