微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何根据Web服务器上的每个端点将全局系统度量分解为

如何解决如何根据Web服务器上的每个端点将全局系统度量分解为

我正在为后端API大规模实施度量标准系统,并且陷入了困境:使用statsd,应用程序本身正在按每个端点记录请求度量标准,但是cpu度量标准处于全局服务器级别。当前,每个服务器有10个线程,这意味着可以一次处理10个请求(是的,它实际上是串行的)。

例如,如果我们有两个端点/user/item,则statsd的实现是区分每个端点的统计信息(DB / Redis I / O等)。但是,假设我们每linux-metrics都在查看N seconds,这些统计信息并不会固有地分隔端点。

我相信,假设您的轮询时间(“ N seconds”)足够小,并且您的请求中有足够的多样性,则有可能分解全局系统指标,以便在端点级别。

为这样的场景成像:

注意:我们将说a代表对/user GET ,而b代表对 /item

|------|------|------|------|------|------|------|------|------|------|
|  t1  |  t2  |  t3  |  t4  |  t5  |  t6  |  t7  |  t8  |  t9  |  t10 |
|------|------|------|------|------|------|------|------|------|------|
|  a   |  b   |   b  |  a   |  a   |  b   |  b   |  a   |  b   |  b   |
|  b   |  a   |   b  |      |  b   |  a   |  b   |      |  b   |      |
|  a   |  b   |   b  |      |  a   |  a   |  b   |      |  a   |      |
|  a   |      |   b  |      |  b   |  a   |  a   |      |  a   |      |
|  a   |      |   b  |      |  a   |  a   |  b   |      |      |      |
|      |      |      |      |  a   |      |  a   |      |      |      |
|------|------|------|------|------|------|------|------|------|------|

在每个时间步t(即t1t2等)中,我们也会对系统指标进行快照。我觉得应该有一种方法(可能通过某种信号分解)来估计每个a / b请求所承受的平均负载。现在,实际上我有20条路线,因此要获得准确的估算值要困难得多。但是就像我之前说的那样,如果您的请求具有足够的多样性(但又不是太多),以便它们在上述的某些地方重叠,那么至少应该有一个大概的估算。

我必须想象这种事情有某种名字,或者至少是这种方法的一些研究或天真的实现。在实践中,是否有任何方法可以达到上述目的?

注意:考虑到这些时间段内的请求可能会流血,这可能会更加困难,但是几乎所有请求都需要

解决方法

我相信答案是通过线性方程式进行求和分解。如果我们说一个系统指标(例如CPU)是一个函数CPU(t1),那么对于发布的示例来说,只需解决以下等式即可。


|------|------|------|------|------|------|------|------|------|------|
|  t1  |  t2  |  t3  |  t4  |  t5  |  t6  |  t7  |  t8  |  t9  |  t10 |
|------|------|------|------|------|------|------|------|------|------|
|  a   |  b   |   b  |  a   |  a   |  b   |  b   |  a   |  b   |  b   |
|  b   |  a   |   b  |      |  b   |  a   |  b   |      |  b   |      |
|  a   |  b   |   b  |      |  a   |  a   |  b   |      |  a   |      |
|  a   |      |   b  |      |  b   |  a   |  a   |      |  a   |      |
|  a   |      |   b  |      |  a   |  a   |  b   |      |      |      |
|      |      |      |      |  a   |      |  a   |      |      |      |
|------|------|------|------|------|------|------|------|------|------|


4a + b = CPU(t1)
a + 2b = CPU(t2)
5b = CPU(t3)
a = CPU(t4)
3a + 3b = CPU(t5)
4a + b = CPU(t6)
2a + 4b = CPU(t7)
a = CPU(t8)
2a + 2b = CPU(t9)
b = CPU(t10)

现在,有多种方法可以求解此方程式(即a = CPU(t8)a = CPU(t4)),但是如果您从a和b(AVG(a))中取平均值相应的解决方案,您应该为此获得一个相当可靠的指标。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。