2009-04-08 25 views
0

1つの呼び出しのみを公開する.asmx Webサービスがある場合。 1つは少数のparamsを取り、その値をSQL Server 2005テーブルのレコードとして挿入するものです。そのメソッドは、ADO.NET接続プールに可能な限り "親切"であるように見えますか?多分、複数のクライアントに1秒に10回(広がって)呼ばれることになったら、どうなるべきでしょうか。私は微調整する必要がある他の設定?Webサービス、ADO.NET接続プール、タイムアウトエラー

現在、私はエラーを取得しています:接続プールが問題だった場合

System.Web.Services.Protocols.SoapException:
Server was unable to process request --> System.Data.SqlClient.SqlException: Timeout expired. The timeout period elapsed prior to the operation or the server is not responding.

誤差は違うだろうか? これは接続プールの問題、SOAPの制限、またはデータベースが非常にビジーで呼び出しが実際にタイムアウトしているかどうかをどのように判断できますか?

答えて

1

自分が行っていることに関する最も重要な情報を投稿しているわけではありません。 Webメソッドであるという事実は、赤ちゃんであり、単にデータベースの問題になり、どれくらいそれを叩いているのでしょう。

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

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

それ以外の場合は、接続の問題です。マシンとサーバーが正しく設定されているかどうかを確認する必要があります(tcp ip、named pipes、またはshared memoryを例)データベース操作。

+0

+1。 Webサービスを排除してくれてありがとう。私はTCP/IPを使用しており、トランザクションはありません。別のマシンでのキューブ作成作業の前に、SSISパッケージのステージングデータからこのマシンに多大な負荷がかかる可能性があります。 BIやDBAのチームではないので、このようなものは私の手の中から少しです。 – BuddyJoe

+0

来週、このコードをさらに深く理解する必要があります。私はメソッドとして2つ以上のメソッドをサニタイズすることができるはずです。 Webサービス全体に散らばっている独占的なものがいくつかあります。 – BuddyJoe