此问题适用于Continuous Web Jobs。
主要问题
我们如何“查看”或以编程方式“记录”当前存储器&运行连续Web作业的VM的网络状态?
背景
我们的网络工作正在抓取一些API,我们不断收到500个错误。我们认为VM为API请求发出了太多线程 - 然后由于网络限制 - 当响应返回时,同时返回的响应太多,从而使VM的网络限制过载。
附带问题:
您如何使用MS Azure进行Web抓取 - 并确保您不会在其运行的VM上超载(就内存+网络而言)?
(似乎对于后台处理,这些VM是为CPU计算而构建的 - 不适用于Web / API抓取)
答案 0 :(得分:2)
我目前仍在使用监控(经典)API。我没有找到API的“非经典”版本,但我也没有花太多时间看。由于Web作业是Web应用程序的一部分,因此您需要使用Microsoft.WindowsAzure.Management.Monitoring.Metrics Namespace中提供的工具监控Web应用程序。
我发现API有些令人困惑,但是花了一些时间与PG一起工作以使其正确。我在MSPFE github页面上提供了一些示例代码:https://github.com/mspfe/AzureMetricsAPISampleKit。在此解决方案中运行“测试”将向您展示如何使用lib。
首先需要通过获取它们的列表来识别Web应用程序:
var webSpaceList = _webSiteClient.WebSpaces.List();
然后收集可用的指标:
foreach (var website in websiteList)
{
MetricDefinitionListResponse wsMetricListResponse = _metricsClient.MetricDefinitions.List(website.WebsiteResourceId, null, null);
website.MetricDefinitionsList = wsMetricListResponse.MetricDefinitionCollection;
website.MetricNamesList = new List<string>();
foreach (var metric in website.MetricDefinitionsList.Value)
{
website.MetricNamesList.Add(metric.Name);
}
MetricValueListResponse wsValueResponse = _metricsClient.MetricValues.List(website.WebsiteResourceId, website.MetricNamesList, "",
_timeGrain, _startDateTime, _endDateTime);
website.MetricValueList = wsValueResponse.MetricValueSetCollection;
}
从那里你应该有度量标准定义和值。很抱歉,如果此代码有点过时......但它应该可以使用。
答案 1 :(得分:0)
Azure WebJobs在Azure App Service的Web应用程序(以前称为Websites)中运行。因此,您的容量由Web App实例的大小(和数量)决定,无论是免费套餐还是其中一个付费套餐。并且您将根据Web App实例来衡量您的利用率。
关于如何使用Azure进行网络搜索的问题,这里无法回答:这是一个基于意见的问题,没有正确答案。