我在tomcat上有一个应用程序(无水平缩放),我发送了20个请求。每个请求执行6-7分钟的复杂计算。
我在具有多核(50+)的独立服务器上运行相同的程序,每个请求都在单独的逻辑处理器上的一个线程中执行-执行时间为3-4分钟。
在Jelastic平台上,它可以扩展到40-42个cloudlet(即使max是92)。有没有一种“影响”伸缩的方法,告诉Jelastic它应该使用更多的cloudlet。(我假设42个cloudlet上的处理器少于20个,时间在线程之间共享)。
另外,如果我再发送两次(40个请求),它将使用大约65个cloudlet(在这种情况下,最大值设置为160)。
我能在任何地方找到什么规则吗? Jelastic如何决定如何扩展,以及如何使用更多的cloudlets?
发布于 2019-12-19 17:51:37
您的Jelastic节点的整体计算能力由cloudlet scaling limit决定。如果您有计算密集型工作负载,则应将此值设置得尽可能高,同时牢记预算限制。(您还可以配置负载警报,以通知您持续的过度使用)
cloudlet消耗(在计费方面)计算为每小时的平均CPU使用率,因此,如果您有几分钟的峰值-如您的示例所示-您将希望允许它尽可能多地使用CPU。
您看到的使用情况是您的工作负载如何跨核心分布的函数,由于您设置的cloudlet限制,每个核心的实际计算能力可能会受到人为的限制。为了获得最佳性能,您必须允许非常高的cloudlet限制,因为这将使您能够完全访问每个内核,而不是(有效地)限制每个内核的时钟速度。
您设置为预留的cloudlet无关紧要(它纯粹是一个计费结构:没有技术含义),并且没有从您的服务器添加或删除任何cloudlets同样,这纯粹是一个计费结构,而不是技术上的。这意味着没有办法指示Jelastic使用更多的cloudlet :这纯粹是由于代码的执行方式(很可能是由于您设置的总体cloudlet限制与底层硬件的计算能力的关系,代码跨内核的传播方式)。
根据不同的Jelastic提供商的硬件选择,您的性能也有可能有所不同。例如,一些将使用具有较低时钟速度的大量核心,其他可能优先于核心数量的时钟速度。在这种情况下,您的应用程序性能将取决于其跨内核(多线程)并行的效率;如果您最密集的工作块不是并行的,那么它将在更高的时钟速度下工作得最好。假设您的cloudlet使用量随着请求的增加而增加,这听起来至少在您的情况下是有部分责任的。
您可能还会考虑,如果您从专用硬件获得更好的性能,您可以将Jelastic作为私有云或混合云选项。它们还可以在不同地区提供不同的硬件选项,以满足不同类型的工作负载。与您的Jelastic提供商交谈,看看他们能为您提供什么。
https://stackoverflow.com/questions/59406753
复制相似问题