奇怪的性能问题C#和RabbitMq

时间:2014-02-15 19:04:51

标签: c# wcf rabbitmq castle-windsor

背景

我开发了几个用于导入数据的WCF服务。接收数据时,我的服务在EasyNetQ服务总线上发布请求,连接到RabbitMq服务器。

然后,使用者接收请求,将其序列化为XML并将其作为参数发送到存储过程以进行处理。依次存储过程执行表合并以插入或更新数据。

问题:

我的问题是,我有时可以获得相当多的消息/秒,有时性能非常差,这反过来导致我的队列在RabbitMq中建立。

我的应用程序使用以下技术:

  • 用于托管网络服务的TopShelf。
  • Windsor依赖注入
  • 用于记录,处理异常和时序性能的拦截器。
  • EasyNetQ作为消息总线。
  • RabbitMq作为消息代理。

我尝试过以下内容:

  • 好几次执行相同的消息 执行时间变化很大。执行存储时 SQL Server Management Studio中的过程,执行时间是 所有重复都大致相同。
  • 针对本地RabbitMq服务器和本地服务器解决了我的问题 数据库中。
  • 删除了用于事务处理的拦截器。
  • 将我的数据库连接类更改为创建\打开新连接 为每次调用重用现有连接(删除使用 sql连接的声明)。

有没有人对可能导致我问题的原因有任何想法?

提前完成。 Matias的

1 个答案:

答案 0 :(得分:0)

假设缓慢来自兔子 - 检查磁盘的I / O以防你保持邮件持久耐用,如果你不涉及磁盘,检查内存水印,以防你内存不足,兔子会将它的消息刷新到磁盘,这将导致此过程中显着的缓慢。