gpt4 book ai didi

azure - WebRequest.Create 忽略我的循环网络场

转载 作者:行者123 更新时间:2023-12-03 04:27:35 28 4
gpt4 key购买 nike

所以,我遇到了一个奇怪的情况。我有一个运行自托管 OWIN API 服务器的 Azure 辅助角色。该辅助角色有 2 个实例(即:它是一个农场)。与这些实例的通信通过 SSL/443 进行,并由负载均衡器后面的 Azure 进行循环

我在现场有数百个客户端,它们每分钟与此辅助角色进行通信并向其发送数据。每隔一段时间(比如每天),我的一个工作角色实例就会重新启动(我们将其称为实例“A”)。重新启动需要 3-4 分钟,在重新启动期间,我的所有客户端都会切换到已启动并运行的实例“B”。这很好。“A”实例完成重启后发生的情况并不好。没有新请求到达“A”实例,每个客户端都“卡在”未重新启动的“B”实例上。我最终拥有 2 台负载平衡服务器,其中一台以 1% CPU 运行,另一台以 60% CPU 运行

我怀疑问题出在我的客户连接到我的工作角色的方式上。这是代码。我究竟做错了什么? WebRequest.Create() 是一个问题吗?我需要切换到其他客户端吗?哪一个?

TIA

        private string PostData(BearerToken token, Guid accountId, string path, object input)
{
var url = _apiUrl + path;
try
{
var client = WebRequest.Create(url);
client.Headers.Add("Authorization", string.Format("Bearer {0}", token.AccessToken));
client.Headers.Add("AccountId", accountId.ToString());
client.Method = "POST";
client.Timeout = 120000;
client.ContentType = "application/json";

var data = JsonConvert.SerializeObject(input);

using (var stream = client.GetRequestStream())
using (var writer = new StreamWriter(stream))
{
writer.Write(data);
writer.Flush();
writer.Close();
using (var response = client.GetResponse())
{
using (var read = response.GetResponseStream())
{
if (read == null) return string.Empty;

using (var reader = new StreamReader(read))
{
return reader.ReadToEnd();
}
}
}
}
}
catch (Exception ex)
{
throw new Exception(string.Format("{0} ({1})", ex.Message, url), ex);
}
}

最佳答案

您的负载均衡器分配模式是否设置为 2 元组或 3 元组?这可以解释这种亲和性。

https://learn.microsoft.com/en-us/azure/load-balancer/load-balancer-distribution-mode

关于azure - WebRequest.Create 忽略我的循环网络场,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41310583/

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