0

nservicebus内のトランザクションスコープに関連していると思われる奇妙なことが起こっていますが、間違った方向に進む前に尋ねるべきだと思いました。

これが私の問題です。エンドポイントが紺碧のワーカーの役割でホストされており、トランスポートの紺碧のキューと通信しています。SQL Server 2012に対してエンティティフレームワーク5を使用して、いくつかのハンドラーで非常に単純なデータベース書き込みを行っています。すべてが素晴らしく、ワーカーの役割を複数のインスタンスにスケールアウトするまですべてが機能します。

これを行うと、散発的なデッドロックエラーが発生し始めます。エラー1205:トランザクション(プロセスID)が別のプロセスのリソースでデッドロックされ、デッドロックの犠牲者として選択されました。トランザクションを再実行します。

エンドポイントのデフォルトの分離レベルを変更することを検討しているのか、それともここで間違った方向を見ているのか。

私はすべてのステートメントでexplainplainsを実行したので、フルスキャンはなく、データベースに負荷がかかっていないと確信しています。これを引き起こしていると思われる唯一の変数は、紺碧のインスタンスを増やして水平方向にスケールアウトすることです。

4

1 に答える 1

0

デフォルトの分離モードをコミット済み読み取りに変更すると、問題が解決しました。ありがとう!

于 2013-01-28T17:00:04.530 に答える