NServiceBus分发服务器吞吐量许可证限制或MSMQ性能地狱?
昨天,在与分销商进行了一些非常有希望的测试之后,我请求额外的预算来购买NSB(36-80核)的许可证 值得一提的是,我们目前正在使用分销商解决管道问题,但尚未用于真正的商业活动,但这将在稍后进行 今天,我的技术非常熟练的同事也开始使用该总线,只是由于他的项目的性质,他的性能要求比我的高出很多。因此,他的测试需要比分销商目前给我的平均30-50 msg pr秒多得多 无论我们试图做什么:NServiceBus分发服务器吞吐量许可证限制或MSMQ性能地狱?,nservicebus,nservicebus-distributor,Nservicebus,Nservicebus Distributor,昨天,在与分销商进行了一些非常有希望的测试之后,我请求额外的预算来购买NSB(36-80核)的许可证 值得一提的是,我们目前正在使用分销商解决管道问题,但尚未用于真正的商业活动,但这将在稍后进行 今天,我的技术非常熟练的同事也开始使用该总线,只是由于他的项目的性质,他的性能要求比我的高出很多。因此,他的测试需要比分销商目前给我的平均30-50 msg pr秒多得多 无论我们试图做什么: 更多的工人 辅助线程上有更多线程 分配器上有更多线程 启用/禁用故障诊断码 所有这些都是在一个简单的概念验证设
var queuePrefix = ConvertFriendlyNameTo.QueueName(AppDomain.CurrentDomain.FriendlyName);
return NServiceBus.Configure.With()
.DefineEndpointName(queuePrefix)
.Log4Net(ObjectFactory.GetInstance<IServiceBusLog>().Build())
.StructureMapBuilder()
.JsonSerializer()
.AsMasterNode()
.RunDistributorWithNoWorkerOnItsEndpoint()
.MsmqTransport()
.IsTransactional(true)
.DisableTimeoutManager()
.DisableSecondLevelRetries()
.UnicastBus()
.CreateBus()
.Start(() => NServiceBus.Configure.Instance.ForInstallationOn<NServiceBus.Installation.Environments.Windows>().Install());
var queuePrefix = ConvertFriendlyNameTo.QueueName(AppDomain.CurrentDomain.FriendlyName);
return NServiceBus.Configure.With()
.DefineEndpointName(queuePrefix)
.Log4Net(ObjectFactory.GetInstance<IServiceBusLog>().Build())
.StructureMapBuilder()
.JsonSerializer()
.EnlistWithDistributor()
.MsmqTransport()
.IsTransactional(true)
.DisableTimeoutManager()
.DisableSecondLevelRetries()
.UnicastBus()
.CreateBus()
.Start(() => NServiceBus.Configure.Instance.ForInstallationOn<NServiceBus.Installation.Environments.Windows>().Install());
我们当前使用的开发人员许可证是否有限制导致此限制,或者MSMQ是否存在严重的性能问题,如以下示例所述:
我在nservicebus自己的网站上读了很多关于许可证的文章,但是没有明确说明开发者许可证的限制
希望有人能帮我:)
[更新]
我回到了基础,并试图用NSB自己的代码示例ScaleOut重现问题,只需发送10000条消息,看看工人/分销商会如何反应。因此,我启动了分发服务器和两个工作人员(每个工作人员有100个线程),猜猜是什么问题再次出现。
var queuePrefix = ConvertFriendlyNameTo.QueueName(AppDomain.CurrentDomain.FriendlyName);
return NServiceBus.Configure.With()
.DefineEndpointName(queuePrefix)
.Log4Net(ObjectFactory.GetInstance<IServiceBusLog>().Build())
.StructureMapBuilder()
.JsonSerializer()
.AsMasterNode()
.RunDistributorWithNoWorkerOnItsEndpoint()
.MsmqTransport()
.IsTransactional(true)
.DisableTimeoutManager()
.DisableSecondLevelRetries()
.UnicastBus()
.CreateBus()
.Start(() => NServiceBus.Configure.Instance.ForInstallationOn<NServiceBus.Installation.Environments.Windows>().Install());
var queuePrefix = ConvertFriendlyNameTo.QueueName(AppDomain.CurrentDomain.FriendlyName);
return NServiceBus.Configure.With()
.DefineEndpointName(queuePrefix)
.Log4Net(ObjectFactory.GetInstance<IServiceBusLog>().Build())
.StructureMapBuilder()
.JsonSerializer()
.EnlistWithDistributor()
.MsmqTransport()
.IsTransactional(true)
.DisableTimeoutManager()
.DisableSecondLevelRetries()
.UnicastBus()
.CreateBus()
.Start(() => NServiceBus.Configure.Instance.ForInstallationOn<NServiceBus.Installation.Environments.Windows>().Install());
var queuePrefix = ConvertFriendlyNameTo.QueueName(AppDomain.CurrentDomain.FriendlyName);
return NServiceBus.Configure.With()
.DefineEndpointName(queuePrefix)
.Log4Net(ObjectFactory.GetInstance<IServiceBusLog>().Build())
.StructureMapBuilder()
.JsonSerializer()
.AsMasterNode()
.RunDistributorWithNoWorkerOnItsEndpoint()
.MsmqTransport()
.IsTransactional(true)
.DisableTimeoutManager()
.DisableSecondLevelRetries()
.UnicastBus()
.CreateBus()
.Start(() => NServiceBus.Configure.Instance.ForInstallationOn<NServiceBus.Installation.Environments.Windows>().Install());
var queuePrefix = ConvertFriendlyNameTo.QueueName(AppDomain.CurrentDomain.FriendlyName);
return NServiceBus.Configure.With()
.DefineEndpointName(queuePrefix)
.Log4Net(ObjectFactory.GetInstance<IServiceBusLog>().Build())
.StructureMapBuilder()
.JsonSerializer()
.EnlistWithDistributor()
.MsmqTransport()
.IsTransactional(true)
.DisableTimeoutManager()
.DisableSecondLevelRetries()
.UnicastBus()
.CreateBus()
.Start(() => NServiceBus.Configure.Instance.ForInstallationOn<NServiceBus.Installation.Environments.Windows>().Install());
var queuePrefix = ConvertFriendlyNameTo.QueueName(AppDomain.CurrentDomain.FriendlyName);
return NServiceBus.Configure.With()
.DefineEndpointName(queuePrefix)
.Log4Net(ObjectFactory.GetInstance<IServiceBusLog>().Build())
.StructureMapBuilder()
.JsonSerializer()
.AsMasterNode()
.RunDistributorWithNoWorkerOnItsEndpoint()
.MsmqTransport()
.IsTransactional(true)
.DisableTimeoutManager()
.DisableSecondLevelRetries()
.UnicastBus()
.CreateBus()
.Start(() => NServiceBus.Configure.Instance.ForInstallationOn<NServiceBus.Installation.Environments.Windows>().Install());
var queuePrefix = ConvertFriendlyNameTo.QueueName(AppDomain.CurrentDomain.FriendlyName);
return NServiceBus.Configure.With()
.DefineEndpointName(queuePrefix)
.Log4Net(ObjectFactory.GetInstance<IServiceBusLog>().Build())
.StructureMapBuilder()
.JsonSerializer()
.EnlistWithDistributor()
.MsmqTransport()
.IsTransactional(true)
.DisableTimeoutManager()
.DisableSecondLevelRetries()
.UnicastBus()
.CreateBus()
.Start(() => NServiceBus.Configure.Instance.ForInstallationOn<NServiceBus.Installation.Environments.Windows>().Install());
var queuePrefix=ConvertFriendlyNameTo.QueueName(AppDomain.CurrentDomain.FriendlyName);
返回NServiceBus.Configure.With()
.DefineEndpointName(队列前缀)
.Log4Net(ObjectFactory.GetInstance().Build())
.StructureMapBuilder()
.JsonSerializer()
.AsMasterNode()
.RunDistributor WithNowWorkerOnitSendPoint()
.MsmqTransport()
.IsTransaction(真)
.DisableTimeoutManager()
.DisableSecondLevelRetries()
.UnicastBus()
.CreateBus()
.Start(()=>NServiceBus.Configure.Instance.ForInstallationOn().Install());
工人:<