2

MySQL C APIを使用するDプログラミングを実行しているときに、興味深いスレッドの問題が発生しています。エラー2013「クエリ中にMySQLサーバーへの接続が失われました」が発生します。この問題は、十分な数のスレッドがネットワークインターフェイスバッファーをフラッディングしたときに発生するように見えますが、サーバーにはまだ転送するものがあります。これは、いくつかの調査と2台の異なるコンピューターでのプログラムの実行に基づく私の最良の推測です。1台のコンピューターにはサーバーへの100Mb接続があり、もう1台のコンピューターには1Gb接続があります。100Mb接続のコンピューターはエラーをスローしますが、1Gbコンピューターはエラーをスローしません。MySQLドキュメントのスレッドクライアントを作成する方法の最初の段落で説明されていることに遭遇しているかどうか疑問に思っています。もしそうなら、SIGPIPEで何をする必要があり、どうすればよいですか?

興味のある人のために、私はライブラリを呼び出す前にmysql_library_initを呼び出しており、mysql_initとmysql_real_connectを使用してスレッドごとに新しいMYSQL*を作成しています。また、私が実行しているクエリは小さなSELECTであり、各クエリから返されるレコードは数千レコードのみであり、すべてのクエリは同じテーブルから実行されます。

4

1 に答える 1

0

mysql_real_connect の前にこれを試してください:

my_bool myb = 1;
mysql_options(conn, mysql_option.MYSQL_OPT_RECONNECT, &myb);

また、この mysql トラブルシューティング ページを確認してください: http://dev.mysql.com/doc/refman/5.5/en/gone-away.html

于 2012-06-05T21:05:47.037 に答える