問題タブ [service-broker]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql-server - Sql Service Brokerで、特定のconversation_handleを使用してダイアログを作成することは可能ですか?
ジョブエンジンのメッセージングキューとしてServiceBrokerを使用しています。ジョブが作成されると、システムがジョブの進行状況を追跡するために使用するGUIDが与えられます。それを考えると、独自のGuidを作成する代わりに、特定のGuidを使用するダイアログをService Brokerで作成することは可能でしょうか?
sql - Service Broker の会話が閉じられていない (CONVERSING 状態のまま)
一部の会話が終了せず、CONVERSING 状態のままになっていることに気付きました。奇妙なことに、キューは一度に 1 つのメッセージのみを処理するように構成されています。ただし、実際には、CONVERSING 状態の会話が 2 つあります。
私が使用しているものの 1 つは、単一のキューとサービスです。これは、通常のサービス ブローカーの実装とは異なります (対話ではなく独白のようにします)。アクティベーション SP を次のように開始します。
sql-server-2008 - 大きなテーブルから各行を ssb キューにエンキューする
250 万行を含むテーブルがあり、各行には xml 型の列が 1 つあります。メッセージが別のキュー (トリガーキュー) に到着したときに、すべてのレコードを削除して sqlserver サービス ブローカー キューに入れる必要があります。パフォーマンスは非常に重要ですが、今では遅すぎます。これを達成するための最良の方法は何ですか?
現在、while(@message <> null) ループで実行するトリガーキューでアクティブ化された sp を使用します。
この問題に取り組むためのより速い方法はありますか?
ところで: 誰かが尋ねる前に: テーブルから始める必要があります。これは、以前に計算されたマージ ステートメントからの出力で満たされているためです。
.net - MSMQ にするか、MSMQ にしないか? (またはキューとしての SQL テーブル)
1 つの SQL Server、1-n の処理サーバー、および 1-n のデータ サプライヤ (ネットワーク全体のハードウェア デバイス) が存在する分散システムがあります。
提供されるデータは、リレーショナル DB 構造に入る前に処理を必要とします - 処理サーバーによって実行されます(Windows サービスとして - データを解析し、処理し、リレーショナル構造に挿入するための .net コード)。キューを実装したいのですが、MSMQ サーバーの複雑さをミックスに追加するかどうかはわかりません。DB (フラット テーブル) をキューとして使用するなど、MSMQ に代わる適切な方法はありますか? .NET は、DB キューのすぐに使えるサポートを提供しますか? または、信頼できるキューイングのための別のオプションはありますか?
ありがとう
編集: (11 月 29 日、午後 11 時 30 分)
SQL Service Broker (SSB) がうまくいくようです。
http://www.netframeworkdev.com/windows-communication-foundation/service-broker-vs-msmq-as-reliable-queueing-mechanism-63981.shtml
編集: (11 月 30 日、午前 7:45)
この件に関する別の非常に役立つリンクを見つけました:
http://social.msdn.microsoft.com/Forums/en-US/sqlservicebroker/thread/52687510-0852-44f3-bfcd-83610d1c1b9a
また、提供されるデータの最大/最小サイズも調べています。頭のてっぺんから、MSMQ や SSB が対応する最大サイズを知っている人はいますか?
MSMQ: 4MB のメッセージ サイズ
SSB: 2GB のメッセージ サイズ
編集: (11 月 30 日、午前 8 時 15 分)
MSMQ と SSB の優れた比較:
メッセージ キューイングの優れた戦略?
sql-server - 「通知メッセージの種類予期していませんでした。」はSSBEAによってログに記録され、私のアプリは呼び出されません
外部アクティベータがインストールされたSQLServer2005StandardEditionを実行しています。SSMSタブに次のコードがあります。
実行すると、結果ペインに期待どおりの出力が表示されます。EATrace.logに、「通知メッセージタイプ// abc / XYZ/RequestPostMessageが予期されていませんでした」というエラーメッセージが表示されます。
EAService.configには、予期するメッセージタイプをEAに指示するものはありません。EAが構成ファイルで指定されたアプリケーションを実行する代わりにこのエラーが発生するのはなぜですか?契約が間違って設定されていませんか?
**以下に新しく追加されたセクション:**
Remusの提案に従って、私は以下を追加しました。
しかし、構成ファイルのNotificationService名を「// abc / xyz/TargetPostService」から「//abc/ xyz / NotificationPostService」に変更すると、「ERROR = 31、通知サービス// abc /xyz/」というエラーが発生します。サービスを開始すると、EATrace.logに「NotificationPostServiceが存在しません」と表示されます。ただし、そのサービスはsys.servicesにリストされています。
**エラー31は解決しましたが、問題は私のアプリが呼び出されていないことです**
Service Broker Team Blogのサンプルアプリを使用し、デバッグ目的でログを追加しました。実行されるとすぐに、他のことをする前にログファイルを書き込みます。VS2010から実行してテストしましたが、正常に機能しますが、この質問の冒頭のコードを使用してメッセージを送信すると、作成されなくなります。したがって、私のアプリはEAによって実行されていないことがわかります。なぜこれが起こっているのかをどのように診断できますか?EAService.configファイルのパスは正しいです。ファイル全体は次のとおりです。
正しいQueueNameを使用していますか?このファイルに他に考えられるエラーはありますか?これを診断するために他に何ができますか?これが発生する会話です:
sql-server - Service Broker のマスター キーの要件
さまざまな MSDN ページと SQL Server ブログを読みましたが、"通常" Service Broker データベースにはマスター キーが必要です。
実際、メッセージを受信しようとすると、次のアプリケーション イベント ログ メッセージが表示されます。
Service Broker は、データベース 'MDR_REPLICATION_Z' のマスター キーにアクセスする必要があります。エラーコード:26。マスター キーが存在する必要があり、サービス マスター キーの暗号化が必要です。
私を混乱させているのは、すべての CONVERSATION で ENCRYPTION = OFF が設定されているのに、なぜこれが起こっているのかということです。
データベース マスター キーを作成せずに、ENCYRPTION が OFF の単一データベース内で Service Broker を内部的に利用する方法はありますか?
tsql - Service Broker が一度に 1 つのメッセージしか受信しない
Receive Top(25) などを指定しても、一度に 1 つのメッセージしかデキューされません。sproc 内で何が間違っているのかわかりませんか? おそらく些細なことですが、問題はわかりません。
スプロケット:
私が間違っていることは何ですか?
ありがとう、
B
sql-server - SQL Server Service Broker: オーバーヘッドまたは最大パフォーマンスを決定する方法は?
Service Broker を適切に使用して、最大限のパフォーマンスを引き出しているかどうかを判断しようとしています。私たちは SB の会話と処理を微調整しており、3000/分から 8000/分になりましたが、CPU は 100% で一定に保たれています。さらに、SB キューが空のままになる日もありますが、同様のトラフィックの日にキューが 500k バックアップされることがあります。
マシンはクアッド クワッド (16 コア)、HT なし、32 GB RAM、26 GB が SQL Server に割り当てられ、AWE が有効になっています。
SQL Server 2008 SP1 (CU なし)、エンタープライズ エディション。Microsoft SQL Server 2008 (SP1) - 10.0.2531.0 (X64) 2009 年 3 月 29 日 10:11:52 Copyright (c) 1988-2008 Microsoft Corporation Enterprise Edition (64 ビット) on Windows NT 6.1 (Build 7600: )
メッセージは Service Broker キューに挿入されます。サービス ブローカー キューはメッセージのグループをプルし、CLR を介してそれらを実行します。CLR は XML を解析し (単純な解析ではありません)、テーブルに挿入します。CLR は、T-SQL コードよりもかなり高速です。
スケジューラごとに平均 35 の実行可能なタスクがあります
毎晩統計/インデックスのメンテナンスを実行します。
パフォーマンスを向上させるために、サーバーの MAXDOP = 1 を設定しました。
SGAM の競合を回避するために、tempdb ファイルの数を 64 に増やしました。TF1118 と組み合わせると、TEMPDB の競合が停止したようです。
sys.dm_os_waiting_tasks を見ると、通常、THREADPOOL で待機しているタスクが最大 60 個あり、その他の種類のタスクはほんの一握りです。
シグナル待機は 70% (リソース待機 = 30%) です。
TokenAndUserPermCache が 20 MB 未満にとどまっていることを確認しました。
sys.dm_os_latch_stats を見ると、1 分間に 40 ~ 200k の BUFFER ラッチが見られます。これはほとんどが sysdesend と、ダイアログを処理するために使用するユーザー テーブルにあります。
また、高い SOS_SCHEDULER_WAIT も見られます。これは、CPU の負荷も示しています。しかし、それは CLR が非常にビジーなためか、それとも Service Broker のオーバーヘッドのためでしょうか? 喜んでコードを提供します。ここに投稿する必要があるものを教えてください。
前もって感謝します。
sql-server - Sql Server Service Broker の転送パフォーマンスの低下を診断する
私は開発環境で Service Broker を数か月間実行しており、1 秒あたり 1000 メッセージ (私のニーズには十分) に向けて、完全に適切なパフォーマンスが得られています。
私はまた、転送インスタンスを含む実際の本番環境のカットダウン レプリカで実行していましたが、今日初めて負荷がかかり、ひどい結果になりました! 私は自分が見ているものを理解しようとしていますが、少し苦労しているので、誰かが助けてくれるかどうかを確認するためにそれを出そうと思いました.
まず、メッセージは最初から最後までフォワーダーを介して配信されます。しかし、数千のメッセージをプッシュしたところ、20 から 100 のバッチが送信された後、1 ~ 2 分の遅延が発生しました。メッセージは最終的に正常に処理されます。
ストア (最初の送信者) のキューを見ると、何千ものメッセージが転送されるのを待っていて、滴り落ちています。
セキュリティ設定は次のようになります。
プロファイラーをオンにすると、多くのエラーが表示されます。
転送インスタンスの例:
そして、私の「中央」ターゲットインスタンスで:
私が行うことができるいくつかのチェック、またはおそらく私が見逃した明らかなものに私を向けることによって、誰かが助けてくれますか. 何かが間違っていることはわかっていますが、何が間違っているのかわかりません。
編集 - 2011 年 14 月 1 日 - 詳細情報: これに関する詳細情報 - メッセージ転送インスタンスを方程式から外したところ、すぐに大幅な改善が見られました - 2000 件のメッセージが数秒で配信されました。
アーキテクチャはトランスポート セキュリティを使用するため、トランスポート セキュリティ/転送がパフォーマンスに悪影響を与える可能性があることを読んだため、現在ダイアログ セキュリティに切り替えようとしています。ダイアログのセキュリティが、転送インスタンスによって復号化する必要があるものを何らかの形で最適化し、パフォーマンスが向上することを願っています。
月曜日の最初のことは、トランスポート層 (イニシエーターとフォワーダーの間) の暗号化をオフにして、それがボトルネックが発生している場所かどうかを確認することです。これにより、通信に大きなオーバーヘッドが発生する可能性はありますか? または、1 つの転送インスタンスがそのような大きなボトルネックを生成しないはずですか?
msmq - プロセス間メッセージング - MSMQ、サービス ブローカ、?
私は、着信メッセージを継続的に処理する .NET サービスの計画段階にいます。これには、さまざまな変換、データベースの挿入と更新などが含まれます。全体として、サービスは巨大で複雑ですが、実行する個々のタスクは小さく、シンプルで明確に定義されています。
このため、将来の簡単な拡張を可能にするために、サービスをいくつかの小さなサービスに分割して、基本的に処理の一部を実行してからチェーン内の次のサービスに渡したいと考えています。
これを実現するには、あるサービスから別のサービスにメッセージを渡す何らかの中間メッセージング システムが必要です。チェーン内のリンクがクラッシュしたり、一時的にオフラインになったりした場合に、宛先がオンラインに戻ったときにメッセージがキューに入れられて処理されるように、これを実現したいと考えています。
私は常にこの種のメッセージ キューイングを使用してきましたが、最近、同様のことを行うと思われる SQL Service Broker を認識しました。SQLSB はこのシナリオの実行可能な代替手段ですか? もしそうなら、標準のメッセージ キューの代わりに SQLSB を使用することでパフォーマンス上の利点が見られますか?
ありがとう