我正在运行我在.Net框架中构建的优化模型(使用Google.OrTools)。当我在本地运行时,应用程序运行时CPU超过99%,所以我的团队决定将此应用程序移动到Azure ScaleSet,我有一个VM,我配置为最多可扩展到10个VM。我面临的问题是仅在我的主VM中具有相同的> 99%CPU,即使添加了新的VM(按比例放大),该VM上的CPU也<1%。我现在很困惑在Azure中使用ScaleSets。
在我的上述情况中,我认为该作业尚未与其他VM共享。我该如何解决这个问题?
请注意,我正在使用控制台应用程序运行我的应用程序,并且此作业与数据库和Drive之间没有频繁连接,这项工作纯属数学问题。
答案 0 :(得分:1)
客户将使用Azure VMSS作为前端点(或后端池)。
Azure VMSS自动缩放功能可降低管理开销,以便随着客户需求随时间的变化而监控和调整您的比例集。
Azure VMSS将使用Azure 负载均衡器将流量路由到所有VMSS实例,这样,所有实例的CPU使用率都是一致的。
如果您的服务在没有其他请求或其他连接的情况下运行,则CPU使用率为99%,这意味着您应该将该VM的大小调整为高大。
答案 1 :(得分:1)
首先,您的偏好和预算并不能确定您的工作量是否可以扩展而不是扩大规模。
Azure规模集包括一些后端VM和负载均衡器。负载均衡器将请求分发给后端服务器。
如果工作负载由多个独立请求组成,则可以利用Azure规模集。这种工作负载的规范示例是Web服务器。在Azure规模集上运行此类工作负载通常不需要对代码进行任何更改。
如果您有一个可以分解为可以独立处理的较小部分的请求,您可以在比例集上运行工作负载。要使这种并行处理工作,您可能需要重写一些代码。负载均衡器会将这些较小的部分视为多个请求。
提高数学表现的其他方法包括
我确定还有其他方法。
答案 2 :(得分:0)
想象一下,实验室里有10台物理机器。如何在所有机器上将此任务拆分为更快运行?
比例集是VM的集合。要使用比例集和自动缩放,您的计算密集型作业需要可并行化。例如,如果您可以将其拆分为多个子任务,那么比例集中的每个VM都可以请求子任务,计算它,将结果发送到某处以进行聚合,并请求另一个任务。
以下是在比例集中的1000个VM上运行的计算密集型任务的示例:https://techcommunity.microsoft.com/t5/Microsoft-Ignite-Content-2017/The-journey-to-provision-and-manage-a-thousand-VM-application/td-p/99113