【发布时间】:2016-04-28 19:49:33
【问题描述】:
在当前项目中,我们目前并排使用 8 个工作角色机器,它们的实际工作方式与 azure 预期的略有不同。
系统简介:
- 每个工作人员最多启动 8 个进程,这些进程实际连接到云队列并处理消息
- 每个进程访问三个不同的云队列以收集用于不同目的(增量识别、备份、元数据)的消息
- 每条消息都会导致 WCF 调用 ERP 系统以收集信息并最终将检索到的响应添加到 ReDis 缓存中
- 由于成本和性能的原因,许多较小的机器都选择了这种方法。 24 台单核机器对 ERP 系统的调用速度为 400 次/秒,而 8 台具有 8 个进程的四核机器的调用速度超过 800 次/秒。
现在问题是:即使增加机器数量以将性能提高到 1200 次调用/秒,我们也遇到了 Cloud Queue 的中断。在同一时刻,80% 的机器进程不再处理消息。
这里有两个问题:
- 这些进程无法进行远程调试,但可以使用dile 获取一些信息。
- 我们使用 Cloud Queue 的 GetMessages 方法从队列中获取最多 4 条消息。 Cloud Queue 总是以 0 条消息回复。重新连接云队列没有帮助。
重启工人确实有帮助,但很快就会导致同样的问题。 我们是否达到了 Cloud Queue 可扩展性的自然终点并应该切换到服务总线?
更新:
我还没有完全理解这个问题,我在the natual borders of Cloud Queue中描述过。
总结一下:
- TCP 连接数令人印象深刻。实际上太令人印象深刻(数百)
- 回到原来的内存大小让系统再次正常运行
【问题讨论】:
标签: wcf azure azure-storage servicebus