0

1つの呼び出しのみを公開する.asmxWebサービスがある場合。いくつかのパラメータを取り、それらの値をSQLServer2005テーブルのレコードとして挿入するもの。そのメソッドは、ADO.NET接続プールに対して可能な限り「親切」であるように見える必要がありますか?複数のクライアントで1秒間に10回呼び出される(広がる)としたら、どのように見えるでしょうか。微調整する必要がある他の設定はありますか?

現在、エラーが発生しています。

System.Web.Services.Protocols.SoapException:
サーバーはリクエストを処理できませんでした-> System.Data.SqlClient.SqlException:タイムアウトが期限切れになりました。操作の前にタイムアウト期間が経過したか、サーバーが応答していません。

接続プールに問題があった場合、エラーは異なりますか?これが接続プールの問題なのか、SOAPの制限なのか、データベースが非常にビジーで呼び出しが実際にタイムアウトしているのかをどのように判断できますか?

4

1 に答える 1

1

あなたは、あなたがしていることに関する最も重要な情報のいくつかを投稿していません. それが webmethod であるという事実は厄介者であり、単純にデータベースの問題と、それをどれだけ叩いているかにかかっています。

例外が示すように、ここで接続の問題があるように思われます (プールとは何の関係もないと思います)。接続を開こうとしたとき、または操作を実行しようとしたときに、これを取得していますか? それぞれに個別のタイムアウトがあるため、明示的に接続を開いてから操作を呼び出すことをお勧めします。これにより、タイムアウトが発生している場所を確認できます。

また、トランザクションを使用しているかどうかを確認します。これが接続に含まれ、タイムアウトが操作にあり、トランザクションを使用している場合、トランザクションを使用して、トランザクションにラップされている他の場所 (読み取りまたは書き込み) でこのテーブルにアクセスしていますか? その時点でデッドロックになる可能性があります。

そうでない場合は接続の問題であり、マシンとサーバーが正しく構成されているかどうかを確認する必要があります (たとえば、tcp ip、名前付きパイプ、または共有メモリを使用しているかどうか)。オペレーション。

于 2009-04-08T17:58:08.977 に答える