Azure 规模集的工作原理
How Azure Scale Set works
我正在 运行建立一个我在 .Net 框架中构建的优化模型(使用 Google.OrTools)。当我在本地 运行 时,应用程序 运行 超过 99% CPU,所以我的团队决定将此应用程序移动到 Azure ScaleSet,我有一个 VM,我配置为最多可扩展 10 个虚拟机。我面临的问题是相同的 >99% CPU 仅在我的主虚拟机中,即使已经添加了新的虚拟机(按比例放大),该虚拟机上的 CPU <1%。我现在对在 Azure 中使用 ScaleSet 感到困惑。
在我的上述案例中,我认为该作业尚未与其他 VM 共享。我该如何解决这个问题?
请注意,我运行正在使用控制台应用程序连接我的应用程序,并且这项工作与数据库和驱动器没有频繁的连接,这项工作是一个纯粹的数学问题。
客户将使用 Azure VMSS 作为前端点(或后端池)。
Azure VMSS 自动缩放功能减少了随着客户需求随时间变化而监控和调整规模集的管理开销。
Azure VMSS 将使用 Azure 负载均衡器 将流量路由到所有 VMSS 实例,这样,所有实例 CPU 使用情况都是一致的。
如果您的服务 运行 没有其他请求或其他连接,CPU 使用率为 99%,这意味着您应该将该 VM 的大小调整到较大的大小。
首先,您的偏好和预算并不能决定您的工作负载是否可以横向扩展而不是纵向扩展。
Azure 规模集包括一些后端 VM 和负载均衡器。负载均衡器将请求分发到后端服务器。
如果工作负载包含多个独立的请求,则它可以利用 Azure 规模集。这种工作负载的典型示例是 Web 服务器。 运行 Azure 规模集上的这种工作负载通常不需要对代码进行任何更改。
如果您有一个可以分解为可以独立处理的更小部分的请求,则您可以 运行 在规模集上处理您的工作负载。要使这种并行处理起作用,您可能必须重写一些代码。负载均衡器会将这些较小的部分视为多个请求。
提高数学成绩的其他方法包括
- 使用不同的、更合适的语言,
- 运行将您的代码放在 GPU 而不是 CPU 或
- 利用第三方系统,例如 Wolfram Mathematica。
我相信还有其他方法。
假设您在实验室中有 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
我正在 运行建立一个我在 .Net 框架中构建的优化模型(使用 Google.OrTools)。当我在本地 运行 时,应用程序 运行 超过 99% CPU,所以我的团队决定将此应用程序移动到 Azure ScaleSet,我有一个 VM,我配置为最多可扩展 10 个虚拟机。我面临的问题是相同的 >99% CPU 仅在我的主虚拟机中,即使已经添加了新的虚拟机(按比例放大),该虚拟机上的 CPU <1%。我现在对在 Azure 中使用 ScaleSet 感到困惑。
在我的上述案例中,我认为该作业尚未与其他 VM 共享。我该如何解决这个问题?
请注意,我运行正在使用控制台应用程序连接我的应用程序,并且这项工作与数据库和驱动器没有频繁的连接,这项工作是一个纯粹的数学问题。
客户将使用 Azure VMSS 作为前端点(或后端池)。
Azure VMSS 自动缩放功能减少了随着客户需求随时间变化而监控和调整规模集的管理开销。
Azure VMSS 将使用 Azure 负载均衡器 将流量路由到所有 VMSS 实例,这样,所有实例 CPU 使用情况都是一致的。
如果您的服务 运行 没有其他请求或其他连接,CPU 使用率为 99%,这意味着您应该将该 VM 的大小调整到较大的大小。
首先,您的偏好和预算并不能决定您的工作负载是否可以横向扩展而不是纵向扩展。
Azure 规模集包括一些后端 VM 和负载均衡器。负载均衡器将请求分发到后端服务器。
如果工作负载包含多个独立的请求,则它可以利用 Azure 规模集。这种工作负载的典型示例是 Web 服务器。 运行 Azure 规模集上的这种工作负载通常不需要对代码进行任何更改。
如果您有一个可以分解为可以独立处理的更小部分的请求,则您可以 运行 在规模集上处理您的工作负载。要使这种并行处理起作用,您可能必须重写一些代码。负载均衡器会将这些较小的部分视为多个请求。
提高数学成绩的其他方法包括
- 使用不同的、更合适的语言,
- 运行将您的代码放在 GPU 而不是 CPU 或
- 利用第三方系统,例如 Wolfram Mathematica。
我相信还有其他方法。
假设您在实验室中有 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