pin*_*ing 5 performance httpclient azure azure-functions
我正在使用 Azure Function .Net 6 隔离。
当我从 VS2022 在 localhost 上运行该函数时,速度比将其部署到 Azure Function 时快 5 倍。本地主机是在 Azure 中与该函数位于同一区域中托管的 VM。我尝试了不同的服务计划,但问题仍然存在。(消费计划、Elastic Premium EP3、Premium V2 P3v2)
代码如下:
DI - 使用 IHttpClientFactory(此处):
public static class DataSourceServiceRegistration
{
public static IServiceCollection RegisterDataSourceServices(this IServiceCollection serviceCollection)
{
serviceCollection.AddHttpClient();
return serviceCollection;
}
}
Run Code Online (Sandbox Code Playgroud)
HttpClient 用法:
private readonly HttpClient _httpClient;
public EsriHttpClientAdapter(HttpClient httpClient)
{
_httpClient = httpClient ?? throw new ArgumentNullException(nameof(httpClient));
}
public async Task<JsonDocument> SendPrintServiceMessage(string url, HttpMethod httpMethod, string referer, IEnumerable<KeyValuePair<string, string>> content = null)
{
var watch = System.Diagnostics.Stopwatch.StartNew();
HttpContent httpContent = null;
if (content != null)
{
httpContent = new FormUrlEncodedContent(content);
}
var msg = new HttpRequestMessage(httpMethod, url) { Content = httpContent };
_httpClient.DefaultRequestHeaders.Referrer = new Uri(referer);
_httpClient.DefaultRequestHeaders.Add("some", "config");
_logger.LogInformation($"Before SendAsync - time {watch.ElapsedMilliseconds}");
var result = await _httpClient.SendAsync(msg);
_logger.LogInformation($"After SendAsync - time {watch.ElapsedMilliseconds}");
var response = await result.Content.ReadAsStringAsync();
_logger.LogInformation($"After ReadAsStringAsync - time {watch.ElapsedMilliseconds}");
if (result.StatusCode == HttpStatusCode.OK)
{
//do some stuff here
}
}
Run Code Online (Sandbox Code Playgroud)
应用洞察如下:
天蓝色:
本地主机:
小智 0
不确定这是否适用于您,但希望它有所帮助。如果您在基本(消耗)计划下运行,您的函数将始终处于冷状态,并且在被 Http 触发器调用时需要启动。为了避免这种情况,如果使用应用服务环境、专用或高级计划,您可以将该功能设置为“始终开启”(如果这在您的预算和范围内)。(换句话说,自由函数总是会冷淡。)
您可以在“配置”>“常规设置”>“始终开启”下更改此设置。
有关函数如何通过冷启动运行的详细信息,请参见:
https://azure.microsoft.com/en-us/blog/understanding-serverless-cold-start/
| 归档时间: |
|
| 查看次数: |
1428 次 |
| 最近记录: |