2011-01-24 9 views
0

OracleをバックエンドとしてOracleに接続するASP.NETを使用するWebアプリケーションがあります。 ASP.Netは、いくつかのビジネスオブジェクトを使用してOracle CRM Webサービスを呼び出しますが、これは正常に動作します。ASP.NETのwebservice呼び出しをロックして、Webサービス呼び出しの制限ごとにOracle CRM時間を回避する

ただし、Oracle CRMには、1秒間に20回のWebサービス・コール(または50mS当たり1回のコール)しかできないという制限があります。このレートを超えると、SOAPExceptionが返されます。 "

このサイトへのトラフィックは最近増加しています。そのため、これらのSOAPExceptionをたくさん取得していますが、Webサービスを呼び出すコードが次のようにラップされています。 50msの制限が破られることがないように、私はそれを変更すると思っていました。

私はしかし、私はまだいくつかのSOAP例外を取得しています次のコード

private static object lock_obj = new object(); 
lock (lock_obj) 
{ 
    call webservice; 
    System.Threading.Thread.Sleep(50); 
} 

を使用しています。 lock()の代わりにmutexを使ってコードを書こうとしましたが、パフォーマンスの影響が問題であることが判明しました。

誰も私の解決策がworkinfではない理由を説明することができますし、代替案を提案することができますか?

+0

おそらく、あなたは間違った問題を解決しています。最初にこの問題を引き起こしているOracle CRMの代替案を見つけられないのはなぜですか?あなたの解決策が何であれ、追加のトラフィックはシステムを停止させることになります。 –

+0

Brillian ideatと正確に何が行われる必要がありますが、残念ながら私のコントロール下にありません – jazza1000

答えて

1

編集:回答に移動しました。 1以上のIISワーカープロセスの可能性があります。私は、オブジェクトのロックがそう以降の同時スレッドを開始することができワーカープロセスにまたがるとは思わないが、私は間違っている可能性

http://hectorcorrea.com/Blog/Log4net-Thread-Safe-but-not-Process-Safe

ことから、その後、最後のリクエストのダニを格納するアプリケーション変数になり私の提案次の発射が安全なときには、あなたは作業を進めることができます。

+0

提案に感謝しますが、問題のアプリケーションプールは1つのワーカープロセスに設定されています – jazza1000

+0

どのタイプのデータが出入りしていますか? Oracleのコールを減らすために着信データに対してキャッシュしますか? WSコールを遅くするよりも良い方法があるはずです。 – Hawxby

+0

はい、キャッシングはオプションですが、アプリケーションをより重要な書き換えにする必要があります – jazza1000

1

アプリケーションが1つのASP.NETワーカープロセスで実行されている限り、自分が所有するアプリケーションで正常に動作するはずですが、考慮すべき点がいくつかあります。

  1. ウェブガーデンを使用していますか?この場合、複数のワーカープロセスが作成されるため、ロックはプロセスごとにのみ取得されます。
  2. 負荷分散環境になっていますか?もしそうなら、あなたは別の方法に行く必要があります。
+0

ウェブガーデンを使用せず、ロードバランスを使用しないので、プロセスが使用されています。だから私はまだ私はSoapExceptions – jazza1000

+0

それはタイミング精度の問題になる可能性がある困惑だ。あなたの睡眠を100に上げて、彼らが離れるかどうか確認してください。 –

0

OK、私たちは、4分ごとに同じオブジェクトの一部を呼び出していた同じサーバー上でWindowsサービスを実行していることが分かりました。私はそれをオフにして(そして、ミッチェルの示唆に従って100まで睡眠に打ち勝った)、問題は完全にになったようだ。

私はほとんどすべてのことを言っているので、私はまだ奇妙な神秘的なsoapexceptionを取得するので、私は問題が並べ替えられていると思う。私はまだこれらの例外をどのように得ることができるかについて少し謎に包まれていますが、今のところそれと一緒に暮らしていきます。

Oracle CRM On Demandのこの機能をもう少し広く公表する必要があります。

関連する問題