目前,我们有一个数据流管道: api调用->、google发布/sub -> BigQuery。api调用的次数将取决于网站上的流量。
我们创建了一个kubernetes部署(在GKE中),用于从pub/sub摄取数据到BigQuery。此部署有一个带有metricName: pubsub.googleapis.com|subscription|num_undelivered_messages和targetValue: "5000"的水平吊舱自动分频器(HPA)。这种结构能够在交通突然增加时自动调节。然而,它将导致一个尖峰的缩放。
我所说的“尖刺”的意思如下:
这是图表,当它变得尖峰(流量上升,但它是稳定的和非尖峰):在pub/sub中未被确认的消息的数量。
当未确认消息的数量超过20k时,我们在堆栈驱动程序中设置一个警报,在这种情况下,它总是频繁地触发。
在这种情况下,是否有办法使HPA变得更稳定(非尖峰)?
任何评论、建议或回答都是非常感谢的。
谢谢!
发布于 2019-05-29 15:34:42
我一直在处理同样的行为。我最后所做的是使用移动平均值平滑num_undelivered_messages。我设置了一个k8s cron,它每分钟将最后20分钟的时间序列数据平均发布到一个自定义度量中。然后配置HPA以响应自定义度量。
虽然效果不错,但并不完美。我观察到,一旦平均数值与实际值相合,自置居所津贴的规模便会过低。所以我最后只添加了一个常量,所以定制的度量就是平均+常数。我发现,对于我的具体情况,价值25,000很好。
有了这个,并且在targetAverageValue中拨号后,自动标度已经非常稳定。
我不确定这是由于一个缺陷,还是仅仅是num_undelivered_messages度量的性质在非常高的负载。
编辑:我使用了堆栈驱动程序/监视戈朗包。有一种简单的方法可以聚合时间序列数据;请参见这里的“聚合数据”https://cloud.google.com/monitoring/custom-metrics/reading-metrics
https://cloud.google.com/monitoring/custom-metrics/creating-metrics
https://stackoverflow.com/questions/53428544
复制相似问题