0
我已經開發了幾個WCF服務導入數據。在接收數據時,我的服務通過EasyNetQ服務總線發佈請求,連接到RabbitMq服務器。
然後,消費者接受請求,將其序列化爲XML並將其作爲參數發送給存儲過程進行處理。該存儲過程依次執行用於插入或更新數據的表合併。
問題:
我的問題是,我有時會ACK消息/秒的相當不錯的量,有時表現得非常差,進而導致我的隊列中RabbitMQ的建立。
我的應用程序使用了以下技術:
- TopShelf託管的Web服務。
- Windsor依賴注入
- 攔截器用於記錄,處理異常和時序性能。 EasyNetQ作爲消息總線。
- RabbitMq作爲消息代理。
我曾嘗試以下操作:
- 執行的相同的消息幾次似乎 執行時間強烈變化。在SQL Server Management Studio中執行存儲的 過程時,對於所有重複,執行時間大約是 。
- 將我的解決方案連接到本地的RabbitMq服務器和本地的數據庫 。
- 刪除交易處理的攔截器。
- 更改我的數據庫連接類創建\打開一個新的連接 爲每個調用重用現有的連接(刪除使用 語句的SQL連接)。
有沒有人有什麼想法可能會導致我的問題?
Thanx提前。 Matias
您應該儘可能記錄日誌並將瓶頸範圍縮小到您管道中的特定位置。沒有它,你只能猜測。由於管道跨越多個子系統和技術,瓶頸可能在任何地方。 –
它可以是任何數量的東西。我會遵循@ WiktorZychla的建議,並嘗試用伐木來縮小瓶頸。您也可以嘗試刪除管道的特定部分。一個好的DBA應該能夠查看SQL Server分析工具,並告訴你可能會遭受糟糕的性能損失。 EasyNetQ消息分派器在單個線程上運行,因此您可能需要嘗試異步訂閱方法和異步數據庫IO。 –