gpt4 book ai didi

Azure Web应用程序多实例困惑

转载 作者:行者123 更新时间:2023-12-03 04:43:15 24 4
gpt4 key购买 nike

我有一个 Web 应用程序,默认有 2 个实例,从资源浏览器中,我可以看到有两个实例。但是,在 global.asax 代码中我有以下代码:

public class LogEntity : TableEntity
{
public LogEntity(string partitionKey, string rowKey)
{
this.PartitionKey = partitionKey;
this.RowKey = rowKey;
}
public LogEntity() { }
public string Submitter { get; set; }
}

public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
Random ran = new Random();
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);

CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConfigurationManager.AppSettings["StorageConnectionString"]);
var tableClient = storageAccount.CreateCloudTableClient();
CloudTable table = tableClient.GetTableReference("logs");
table.CreateIfNotExists();

var key1 = ran.Next();
var machineName1 = Environment.GetEnvironmentVariable("WEBSITE_INSTANCE_ID");

LogEntity log1 = new LogEntity(Environment.MachineName + ":" + machineName1 + ":" + key1.ToString(), "instance started");
TableBatchOperation batchOperation1 = new TableBatchOperation();
batchOperation1.Insert(log1);
table.ExecuteBatch(batchOperation1);

}
}

但是,从我的 Azure 表日志中,我只能看到生成的一个日志条目,并且它始终来自同一个实例。

这是否意味着当我有多个实例时,只有一个实例会调用application_start?我认为所有实例都应该点击 application_start 因为它们独立运行。然而,我的日志似乎与我的理解相矛盾。

更新

我展示了记录到 azure 表的代码。我的期望是,由于有两个实例,我应该看到在 azure 表中创建了两个日志条目。然而,总是只有一个条目。

最佳答案

我与 Microsoft 支持人员进行了一些讨论,现在明白了原因。

对于我的网站,我启用了 ARR Affinity,启用该设置后,azure 负载均衡器将仅启用已访问的负载均衡器(作为 Affinity cookie)。结果,我只看到我的代码运行一次。

当我禁用 Affinity 时,Azure 负载均衡器将立即启用所有实例,并且我会看到我的代码在所有实例上运行。

关于Azure Web应用程序多实例困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44693635/

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