- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
对于具有大量 guest 可执行应用程序的群集,应在 Service Fabric Placement/Load balance 配置中设置哪些阈值?
我在 Service Fabric 尝试将太多服务放置到单个节点上的速度过快时遇到了问题。
举一个集群大小的例子,有 2-4 个工作节点类型,每个节点类型有 3-6 个工作节点,每个节点类型可以运行 200 个 guest 可执行应用程序,每个应用程序至少有 2 个副本。节点在运行时能够运行服务,只是 CPU 过高的启动时间。
问题似乎是集群配置中设置的放置和负载平衡规则的阈值或默认值。作为我尝试过的示例:我已打开 InBuildThrottlingEnabled
并设置 InBuildThrottlingGlobalMaxValue
至 100
,我已将 Global Movement Throttle 设置设置为总应用程序计数的不同百分比。
在这一点上,我试图解决两种不同的情况。在这两种情况下,节点都会在一段时间内达到 100%,以便服务结构声明节点已关闭。
第一:从关闭的所有节点启动整个集群,而不会出现大量节点。
第二:单个节点在主机恢复联机后启动的服务过多而不堪重负
这是我在集群上的当前参数:
"Name": "PlacementAndLoadBalance",
“参数”: [
{
"Name": "UseMoveCostReports",
“值”:“真”
},
{
"Name": "PLBRefreshGap",
“值”:“1”
},
{
"Name": "MinPlacementInterval",
“值(value)”:“30.0”
},
{
"Name": "MinLoadBalancingInterval",
“值(value)”:“30.0”
},
{
"Name": "MinConstraintCheckInterval",
“值(value)”:“30.0”
},
{
"Name": "GlobalMovementThrottleThresholdForPlacement",
“值(value)”:“25”
},
{
"Name": "GlobalMovementThrottleThresholdForBalance",
“值(value)”:“25”
},
{
"Name": "GlobalMovementThrottleThreshold",
“值(value)”:“25”
},
{
"Name": "GlobalMovementThrottleCountingInterval",
“值(value)”:“450”
},
{
"Name": "InBuildThrottlingEnabled",
“值”:“假”
},
{
"Name": "InBuildThrottlingGlobalMaxValue",
“值(value)”:“100”
}
]
},
基于 discussion in answer below ,想留下一个图形图像:如果一个节点出现故障,将服务改组到其余节点的行为将导致第二个节点出现故障,如此处所述。绿色节点关闭,然后紫色节点由于被混入的资源过多而关闭。
最佳答案
从SF的角度来看,1和2是同一个问题。另请注意,SF 不会仅仅因为 CPU 消耗量高而驱逐节点。所以:“节点在一段时间内达到 100%,以便服务结构声明节点关闭。”需要更多的解释。机器可能由于其他原因出现故障,或者我想可能是因为负载太高以至于内核级故障检测器无法 ping 其他机器,但这并不常见。
对于配置更改:我会删除所有这些以使用默认值
{
"Name": "PLBRefreshGap",
"Value": "1"
},
{
"Name": "MinPlacementInterval",
"Value": "30.0"
},
{
"Name": "MinLoadBalancingInterval",
"Value": "30.0"
},
{
"Name": "MinConstraintCheckInterval",
"Value": "30.0"
},
为了使内置 throttle 工作,这需要翻转为真:
{
"Name": "InBuildThrottlingEnabled",
"Value": "false"
},
此外,由于这些可能是违反约束和放置(不是主动重新平衡),我们需要明确指示 SF 也限制这些操作。 SF 中有此配置,虽然目前没有记录或公开支持,但您可以
see it in the settings .默认情况下,只有平衡受到限制,但您应该能够为所有阶段打开限制,并通过如下所示的方式设置适当的限制。
{
"Name": "ThrottlePlacementPhase",
"Value": "true"
},
{
"Name": "ThrottleConstraintCheckPhase",
"Value": "true"
},
这些用于设置限制的下一个设置在它们自己的部分中,并且是不同节点类型名称到要为该节点类型节流的限制的映射。
{
"name": "MaximumInBuildReplicasPerNodeConstraintCheckThrottle",
"parameters": [
{
"name": "YourNodeTypeNameHere",
"value": "100"
},
{
"name": "YourOtherNodeTypeNameHere",
"value": "100"
}
]
},
{
"name": "MaximumInBuildReplicasPerNodePlacementThrottle",
"parameters": [
{
"name": "YourNodeTypeNameHere",
"value": "100"
},
{
"name": "YourOtherNodeTypeNameHere",
"value": "100"
}
]
},
{
"name": "MaximumInBuildReplicasPerNodeBalancingThrottle",
"parameters": [
{
"name": "YourNodeTypeNameHere",
"value": "100"
},
{
"name": "YourOtherNodeTypeNameHere",
"value": "100"
}
]
},
{
"name": "MaximumInBuildReplicasPerNode",
"parameters": [
{
"name": "YourNodeTypeNameHere",
"value": "100"
},
{
"name": "YourOtherNodeTypeNameHere",
"value": "100"
}
]
}
我会进行这些更改,然后再试一次。其他信息,例如实际导致节点关闭的原因(通过事件和 SF 健康信息确认)将有助于确定问题的根源。验证在节点上启动 100 个应用程序实例是否确实有效以及这是否是合适的阈值可能也很好。
关于azure-service-fabric - 对于具有大量 guest 可执行应用程序的集群,应该在 Service Fabric Placement/Load balance 配置中设置什么阈值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62558279/
我看过一些 placement new 的例子,但对各种类型内部发生的事情有点困惑。 一个简单的例子: using my_type = std::string; using buffer_
需要帮助在 Hibernate 继承中实现此场景 Cow 和 Dog 继承 Animal 类, 牛和狗都有“后代”名单 牛有额外的 list - 每月疫苗接种日期 这个 Hibernate 表示方式正
背景 我正在开发一个嵌入式 C++ 项目,在该项目中我正在使用继承构建一个简单的状态机。这个想法是每个状态都将继承自一个名为 State 的基类,状态管理器将在状态转换期间创建和销毁子类实例。为了避免
这里有没有人使用过C++的“placement new”?如果是这样,那是为了什么?在我看来,它仅在内存映射的硬件上有用。 最佳答案 新的Placement允许您在已分配的内存中构造一个对象。 当您需
我一直在阅读一些关于 placement new on SO 的问题,我发现了一些不同的使用方法,我想我会在这里问一下。我知道 placement new 基本上是您创建对象并在您选择的已分配内存中为
我正在通过以下代码学习新的 C++ 布局。 class Cell { public: Cell() { printf("default constructor by %s\n"
#include #include struct A { int a; }; struct B : virtual A { int b; }; struct C : virtual A { in
我刚刚发现了一些用 C++ 实现的容器。该类使用内部缓冲区来管理其对象。这是一个没有安全检查的简化版本: template class Container { public: Containe
是否有一种模式可以在退出范围时自动调用堆栈上 placement-new 初始化对象的析构函数?我想跳过内存显式调用析构函数的需要。或者,是否有一种不同于 placement-new 的方法来构建具有
在 Android Activity 上,我想将图像设置为左下角的背景。操作方法如下:Background Image Placement 但是,我还希望能够指定不是该图像的其余背景具有特定颜色。这可
这里有人用过C++的“placement new”吗?如果是这样,为什么?在我看来它只对内存映射硬件有用。 最佳答案 Placement new 允许您在已分配的内存中构造一个对象。 当您需要构造一个
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topi
假设我有一个 MyStack 类公开了: class MyStack { public: template T* Push() { Reserve(sizeof(T)); // Make s
这里有人用过C++的“placement new”吗?如果是这样,为什么?在我看来它只对内存映射硬件有用。 最佳答案 Placement new 允许您在已分配的内存中构造一个对象。 当您需要构造一个
这里有人用过C++的“placement new”吗?如果是这样,为什么?在我看来它只对内存映射硬件有用。 最佳答案 Placement new 允许您在已分配的内存中构造一个对象。 当您需要构造一个
我正在创建一个受歧视的类 union 体。我使用的是 c++ 17,所以我可以在技术上使用 std::variant,但由于特定的用例,我希望每个变体的含义更加明确(特别是因为其中两种情况没有数据,除
尝试使用 placement new 但它一直给我错误。我记得不久前,它正在工作。 g++(版本 4.8.4)在 Ubuntu 14.04 上。 #include typedef unsigned
这里有人用过C++的“placement new”吗?如果是这样,为什么?在我看来它只对内存映射硬件有用。 最佳答案 Placement new 允许您在已分配的内存中构造一个对象。 当您需要构造一个
这个问题在这里已经有了答案: What uses are there for "placement new"? (25 个答案) 关闭 8 年前。 我有两个使用new运算符分配内存的案例。 clas
我有一 block 内存区域,将用于多个队列。比如我分配了1024字节的内存,需要两个队列。第一个队列将占用前 512 个字节,第二个队列将占用接下来的 512 个字节。 但是,我的队列由 C++ 类
我是一名优秀的程序员,十分优秀!