在当前项目中,我们当前使用8个并行的工作角色机器,它们实际上有点像不同的,而不是azure可能期望的。蔚蓝云队列的可伸缩性
该系统的短概要:
- 每个工人开始到实际连接至云队列8个处理和处理消息
- 每个进程访问三种不同的云队列用于收集消息用于不同的目的(增量识别,备份和元数据)
- 每条消息都会导致WCF调用ERP系统来收集信息,并最终在ReDis缓存中添加retreived响应
- 此方法已被选择在许多小型机器上由于成本和性能的原因。虽然24台单核机器对ERP系统的执行速度为400次/秒,但8台四进制8台机器每秒可执行800次以上的呼叫。
现在回答这个问题:当增加机器数量以将性能提高到1200个调用/秒时,我们经历了Cloud Queue的中断。在同一时刻,80%的机器进程不再处理消息。
在这里,我们有两个问题:
- 远程调试是不可能的这些过程,但它是可以使用dile得到一些信息出来。
- 我们使用Cloud Queue的GetMessages方法从队列中取得4条消息。 Cloud Queue始终以0消息回应。重新连接云队列没有帮助。
重新启动工人确实有帮助,但很快就会导致同样的问题。 我们是否碰到了Cloud Queue的可扩展性的自然结局,并且应该切换到Service Bus?
更新:
我一直没能完全理解这个问题,我在the natual borders of Cloud Queue描述它。
总结:
- TCP连接的计数都十分可观。其实太令人印象深刻(多几百个)
- 再回到原先的容量让系统恢复正常
实际上,更好的性能是我们之所以选择Cloud队列的原因。我们从来没有通过8个流程达到最大8个工人达到2k/s。从我的观点来看,4条消息 - 更糟糕的情况是,只有不到300条电话。我个人认为开放式TCP连接的数量不能由操作系统维护。也很奇怪,根本没有例外。没有消息。 :-(无论如何感谢链接! –