标签: latency

用于监控谷歌云发布/订阅的 Stackdriver 延迟

记录自https://cloud.google.com/monitoring/api/v3/metrics#time-series

指标数据的收集时间表因受监控的资源而异。有些数据由 Stackdriver Monitoring 定期从受监控的资源中“拉取”,有些数据由应用程序、服务或 Stackdriver Monitoring 代理“推送”。

我想知道 stackdriver 如何从 Google Cloud Pub/Sub 收集数据,承诺的延迟范围是多少?我尝试创建主题/订阅并发布消息,并观察指标记录到 stackdriver 需要多长时间。平均大约1-2分钟,但有时很慢,长达5-8分钟。

monitoring latency google-cloud-pubsub stackdriver

5
推荐指数
1
解决办法
1019
查看次数

使用 Apache Kafka 键/值存储有哪些副作用?

我知道 Kafka 不是 ak/v 商店,但请耐心听我说。假设它是使用下面的 k/v API 来粗略实现的。每个键都是一个主题,键的当前“值”是写入该主题的最后一条消息:

put(key, value) --> publish(topic=key, message=value)
get(key) --> consume(topic=key, offset = last_offset - 1)
Run Code Online (Sandbox Code Playgroud)

此外,假设状态在不同的 Kafka 集群之间复制(使用 MirrorMaker 双向),以允许用户读/写到更近的数据中心以减少延迟。

我已经知道这样做的一些明显的副作用,例如:

  • 由于“键”映射到一个主题,因此您只能有 1 个分区来保证排序(因为您希望最后放置的值始终位于日志的末尾)。
  • 需要考虑保留策略,因为日志中的最后一条消息可能会被删除
  • 如果您对离您最近的集群执行 put(key, value),即使从技术上讲这是对该密钥的最新放置,MirrorMaker(由于延迟)可能会从另一个集群发布过时的密钥,从而覆盖您最近的放置价值

这里主要关注的是延迟,尤其是不同集群之间的延迟。与 Redis、memcached 或 etcd 等传统 k/v 解决方案相比,您认为该解决方案在压力大的工作负载(例如,给定键/主题上每秒数千次写入)和压力网络条件下的表现如何?

想法?

非常感谢你。

latency distributed-computing apache-kafka

5
推荐指数
1
解决办法
6473
查看次数

使用 Prometheus 的平均请求持续时间

我已在 Kubernetes 集群中部署了 Istio Bookinfo 应用程序。根据文档,我尝试使用以下查询来测量平均请求持续时间:

rate(istio_request_duration_milliseconds_sum[1m]) / rate(istio_request_duration_milliseconds_count[1m])
Run Code Online (Sandbox Code Playgroud)

此查询返回“双倍”结果,即对于每个请求,我得到两个结果,具有不同的值,但目标相同,一个标记为reporter=“source”,另一个标记为reporter=“destination”。我无法找到任何相关说明,也不清楚这些措施是如何运作的。为什么我返回两个值?

duration latency kubernetes prometheus istio

5
推荐指数
1
解决办法
6664
查看次数

CDN上的Dojo与自己安装

我使用了相当多的Dojo,但到目前为止我只是通过包含来自AOL/Google等CDN来使用它.

托管Dojo副本而不是通过CDN使用它有什么好处吗?我没有太多需要改变代码库,但我想有其他优点/缺点?

dojo latency cdn

4
推荐指数
1
解决办法
817
查看次数

我该如何处理游戏开发中的延迟?

我正在开发一个由多人网络浏览器游戏组成的爱好项目.这是我的第一次,我偶然发现了延迟问题.

我试图让用户控制尽可能顺利,并且延迟正在阻碍.

我认为平均延迟可能在80-200ms左右,而对于几乎平滑的控制,命令动作延迟需要小于100ms.

我有几个问题:

  • 在需要之前100毫秒尝试发送用户操作是不错的做法?例如,用户按住" - >"箭头键,我需要在行动需要提交给服务器之前100ms提交右箭头键动作.

  • 开发人员如何在在线服务器和客户端之间保持一致/同步?

  • 任何提示或建议?


谢谢你们,非常感谢帮助.:)

python pygame latency

4
推荐指数
1
解决办法
317
查看次数

有没有办法在Java RMI调用中引入假延迟?

想要诊断当我的客户与世界另一端的服务器通话时发生的瓶颈.我想在我的本地计算机上运行服务器并模拟延迟.有没有办法在所有远程调用中注入一个简短的线程睡眠?我不确定哪个远程呼叫是瓶颈,所以我需要将它们全部延迟.

第二次尝试澄清:我不想将线程睡眠复制粘贴到每个远程方法中,因为有很多远程方法.我正试图找到一种方法将睡眠注入RMI子系统,因此所有通过RMI的调用都将被延迟.

java debugging latency rmi

4
推荐指数
1
解决办法
673
查看次数

TCP接收窗口

我试图了解接收器窗口如何影响高延迟连接的吞吐量.

我在两台相距很远的机器上有一对简单的客户端 - 服务器应用程序,两者之间的连接是250毫秒延迟RTT.我使用Windows(XP,7)和Linux(Ubuntu 10.x)运行此测试,结果相同,所以为了简单起见,我们假设:客户端接收数据:WinXP Pro Server发送数据:Win7 Pro再次,延迟是250毫秒RTT.

我在不更改客户端上的接收器缓冲区大小的情况下运行TCP测试(默认为8Kb),我在线上看到(使用Wireshark):

  • 客户端向服务器发送ACKS,TCP包包含RWIN = 65k
  • 服务器发送数据并报告RWIN = 65k

查看跟踪,我看到3-4个数据包(有效载荷为1460字节)的突发,紧接着是从客户端机器发送到服务器的ACK,然后没有任何约250毫秒然后来自服务器的新数据包突发给客户.

因此,总而言之,服务器似乎甚至在填满接收者窗口之前就不会发送新数据.

为了做更多的测试,这次我还运行了相同的测试,在客户端机器上更改了接收器的缓冲区大小(在Windows上,更改接收器的缓冲区大小最终会影响机器公布的RWIN).我希望在阻止ACK之前看到大量的数据包突发...并且至少有更高的吞吐量.

在这种情况下,我将recv缓冲区大小设置为100,000,000.从客户端到服务器的数据包现在有一个RWIN = 99,999,744(好吧,那很好),但不幸的是从服务器发送到客户端的数据模式仍然是相同的:短暂的突发,然后是漫长的等待.为了确认我在线上看到的内容,我还测量了从服务器向客户端发送大量数据的时间.我没有看到使用大型RWIN或使用默认值的任何更改.

任何人都可以帮助我理解为什么更改RWIN并不会真正影响吞吐量?

很少有注意事项: - 服务器使用8Kb块的write()尽可能快地发送数据 - 正如我之前所说,我也看到了使用Linux的类似效果.更改接收器缓冲区大小会影响节点使用的RWIN,但吞吐量保持不变. - 我分析了数百个数据包之后的跟踪,给TCP足够的时间启动机制放大CWIN大小.


正如所建议的那样,我在这里添加了一条线迹的小快照

No.     Time        Source                Destination           Protocol Length Info
     21 2.005080    CCC.CCC.CCC.CCC       sss.sss.sss.sss       TCP      60     57353 > 21500 [ACK] Seq=1 Ack=11681 Win=99999744 Len=0
     22 2.005109    sss.sss.sss.sss       CCC.CCC.CCC.CCC       TCP      1514   21500 > 57353 [ACK] Seq=19305 Ack=1 Win=65536 Len=1460
     23 2.005116    sss.sss.sss.sss       CCC.CCC.CCC.CCC       TCP      1514   21500 > 57353 [ACK] Seq=20765 Ack=1 Win=65536 Len=1460
     24 …
Run Code Online (Sandbox Code Playgroud)

performance networking tcp latency throughput

4
推荐指数
1
解决办法
1万
查看次数

C++代码比它的C等价慢?

C++编程语言有哪些方面,其中代码比同等的C语言慢?显然,这将排除虚拟功能和vtable功能等OO功能.

我想知道,当你在延迟关键领域进行编程时(并且你不担心OO功能)是否可以坚持使用基本的C++或者C会更好吗?

c c++ performance latency

4
推荐指数
1
解决办法
677
查看次数

Linux内核在压力下具有更好的响应时间

我有一个我无法理解的stange行为:为了性能测量的目的,我使用'旧的'并行端口接口在debian内核3.2.0-4-amd64上生成IRQ(我使用连接的外部信号发生器) to tha ACK pin).

我编写了自己的内核模块(仅限上半部分)来处理中断并将外部信号发送回并行端口,并在示波器上显示两个信号,以便测量内核响应时间.一切都按预期工作,我可以看到平均70μs的时间响应,一些20μs的"爆发".我正在运行"Intel(R)Core(TM)i3-3240 CPU @ 3.40GHz".

现在,"无法解释"的部分.如果我使用"压力"程序加载CPU,内存和I/O,我预计平均时间最差,但是相反的情况发生:我的平均响应时间下降到20μs.我尝试了3个不同的内核:vanilla,PREEMT-RT和vanilla,NO_HZ选项设置为false.有人可以解释这个的魔力吗?

我将"调控器"配置更改为"性能",但不会更改任何内容.

linux performance latency linux-kernel

4
推荐指数
1
解决办法
247
查看次数

使用Prometheus测量服务延迟

我是普罗米修斯和格拉那那的新手。

我的主要目标是获得每个请求的响应时间。

对我来说,这似乎是一件简单的事情-但是,无论我做什么,我都无法获得所需的结果。

我需要能够分析最近几分钟/几小时/几天的服务延迟。我发现的当前实现是一个简单的摘要(没有分位数的定义),每15秒就会刮一次。

  1. 是否可以从我的普罗米修斯摘要中获得最后一分钟的平均请求延迟?
  2. 如果是:如何?如果不是:我该怎么办?

目前,我正在使用以下查询:

rate(http_response_time_sum{application="myapp",handler="myHandler", status="200"}[1m])
/
rate(http_response_time_count{application="myapp",handler="myHandler", status="200"}[1m])
Run Code Online (Sandbox Code Playgroud)

我得到两个“数据集”。第一个的值为“ NaN”。我想这是零除的结果。

提前THX!

(使用spring-client)

monitoring latency summary grafana prometheus

4
推荐指数
1
解决办法
6355
查看次数