gpt4 book ai didi

c# - Azure 云服务角色实例 - 自动缩放 - 更改事件未触发

转载 作者:可可西里 更新时间:2023-11-01 08:13:46 25 4
gpt4 key购买 nike

我的云服务部署有 4 个辅助角色,其中一个角色启用了自动扩展。一旦发生自动缩放,所有角色的所有实例都会被回收。

理想情况下,我想阻止角色回收,或者至少以受控方式终止所有其他角色的工作。

我发现,你可以react to the RoleEnvironment.Changing event并取消它以请求正常关闭(即调用 OnStop)。但是,通过将跟踪输出添加到更改事件处理程序,我注意到更改事件显然没有被触发,因此取消也没有被注册。

private void RoleEnvironmentChanging(object sender, RoleEnvironmentChangingEventArgs e)
{
// This tracing output does not show up in the logs table.
Trace.TraceInformation("RoleEnvironmentChanging event fired.");
if ((e.Changes.Any(change => change is RoleEnvironmentConfigurationSettingChange)))
{
// This one neither.
Trace.TraceInformation("One of the changes is a RoleEnvironmentConfigurationSettingChange. Cancelling..");

e.Cancel = true;
}
if ((e.Changes.Any(change => change is RoleEnvironmentTopologyChange)))
{
// This one neither.
Trace.TraceInformation("One of the changes is a RoleEnvironmentTopologyChange. Cancelling.");

e.Cancel = true;
}
}

public override bool OnStart()
{
// Hook up to the changing event to prevent roles from unnecessarily restarting.
RoleEnvironment.Changing += RoleEnvironmentChanging;

// Set the maximum number of concurrent connections
ServicePointManager.DefaultConnectionLimit = 12;

bool result = base.OnStart();

return result;
}

还有adding an internal endpoint给每个角色都没有带来变化。这是 .csdef 中的配置:

<WorkerRole name="MyRole" vmsize="Medium">
[...ConfigurationSettings...]
<Endpoints>
<InternalEndpoint name="Endpoint1" protocol="http" />
</Endpoints>
</WorkerRole>

将协议(protocol)更改为“any”也没有成功。

如何在扩展操作后停止回收我的角色实例?

编辑:
» 包含的代码片段
» 修正了拼写错误

最佳答案

您是否尝试过以下操作之一?

  • 检查事件是否在自动扩展的角色实例中触发(以确保内部端点没有问题)
  • 进行完整的重新部署(而不是更新)。
  • 在事件处理程序中的跟踪输出之后添加一个简短的 Thread.Sleep()(有时在注册跟踪输出之前角色会被关闭)
  • 通过管理门户更改其中一项配置(并检查事件是否被触发)
  • 检查其他事件(例如 RoleEnvironment.Changed)是否正在触发

关于c# - Azure 云服务角色实例 - 自动缩放 - 更改事件未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29801597/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com